0

我正在开发一个计时器应用程序,它使用两个单独的 XML 文件来存储数据。XML 文件 1 存储分配时间和游戏名称的摘要数据。XML 文件 2 存储数据集的内容,这更像是事件的叙述。这允许用户加载保存的数据,并且基本上从他们离开的地方开始。我正在对 XML 文件 1 使用序列化/反序列化并将值加载到变量和 dataset.XMLReader(xml 文件路径) 以加载数据集。

我想合并这两个 XML 文件,但经过几个小时的搜索和尝试不同的代码后,我陷入了僵局。我正在尝试做的事情甚至可能吗?

我的一个想法是不要对 XML 文件 1 使用序列化/反序列化,而是重新构建我的应用程序(呃)以将这些变量也加载到数据集中,然后从那里填充变量。但是我仍然遇到 dataset.XMLReader(xml file path) 遇到多个根节点或节点结构不一致的问题的问题。

非常感谢使用 3 行代码让我的生活更轻松的问题、评论或圣杯解决方案。

XML 文件 1 的代码:

    static public void SerializeToXML(TimeData times, String filename)
    {
        XmlSerializer serializer = new XmlSerializer(typeof(TimeData));
        TextWriter textWriter = new StreamWriter(filename);
        serializer.Serialize(textWriter, times);
        textWriter.Close();
    }

    private void DeSerializeFromXML(string filename)
    {
        XmlSerializer serializer = new
        XmlSerializer(typeof(TimeData));

        FileStream fs = new FileStream(filename, FileMode.Open);
        XmlReader reader = XmlReader.Create(fs);

        TimeData i;
        i = (TimeData)serializer.Deserialize(reader);            

        [bunch of code to convert ticks to readable time values and whatnot]

        fs.Close();
    }


XML File 1:

<?xml version="1.0" encoding="utf-8"?>
<TimeData>
  <Name>Test</Name>
  <TimeAllotted>76000000</TimeAllotted>
  <CumulativeTime>0</CumulativeTime>
  <TimeRemaining>76000000</TimeRemaining>
</TimeData>

XML 文件 2 的代码:

本质上它只是 ds.ReadXml(xmlFileName); 和 ds.WriteXml(newFilename);

XML File 2:
<?xml version="1.0" encoding="utf-8"?>
<Detail>
  <Timer>
    <ID>1</ID>
    <Segment>1</Segment>
    <Event>Start</Event>
    <Value>00:00:00</Value>
    <Notes>Some Text</Notes>
  </Timer>
    <Timer>
      <ID>2</ID>
      <Segment>1</Segment>
      <Event>Start</Event>
      <Value>00:00:00</Value>
      <Notes>Some More Text</Notes>
  </Timer>
</Detail>

我希望生成的 XML 文件看起来像什么,或者至少是包含上面所有数据的类似文件:

XML File 1:
<?xml version="1.0" encoding="utf-8"?>
<TimeApp>
  <TimeData>
    <Name>Test</Name>
    <TimeAllotted>76000000</TimeAllotted>
    <CumulativeTime>0</CumulativeTime>
    <TimeRemaining>76000000</TimeRemaining>
  </TimeData>
  <Detail>
    <Timer>
      <ID>1</ID>
      <Segment>1</Segment>
      <Event>Start</Event>
      <Value>00:00:00</Value>
      <Notes>Some Text</Notes>
    </Timer>
      <Timer>
        <ID>2</ID>
        <Segment>1</Segment>
        <Event>Stop</Event>
        <Value>00:00:00</Value>
        <Notes>Some More Text</Notes>
    </Timer>
  </Detail>
</TimeApp>
4

1 回答 1

0

问题解决了,我通过使用古老的“退一步,前进两步”方法做到了。

我没有将要保存在 XML 文件中的数据保存在数据表和一组类变量中,而是将两者放在同一数据集中的单独数据表中。此时需要做的只是一个 dataset.GetXML,然后将其保存到一个极值文件中。要重新加载,只需使用 dataset.ReadXML(xmlFilename)。

问题解决了。希望这对类似泡菜的人有所帮助。

于 2013-02-19T20:38:13.113 回答