我正在开发一个计时器应用程序,它使用两个单独的 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>