我有一個計時器應用程序,我正在使用兩個單獨的XML文件來存儲數據。 XML文件1存儲分配時間和遊戲名稱的摘要數據。 XML文件2存儲數據集的內容,這更多是對事件的敘述。這允許用戶加載保存的數據並基本從他們離開的地方開始。我正在使用XML File 1的serialize/deserialize並將值加載到變量和dataset.XMLReader(xml文件路徑)中以加載數據集。具有相同XML文件的XML序列化和dataset.XMLReader可能嗎?
我想結合這兩個XML文件,但經過幾個小時的搜索和嘗試不同的代碼,我打了一個僵局。我甚至試圖做甚麼?
我的想法之一是不使用XML文件1的序列化/反序列化,重新編輯我的應用程序(ugh)以將這些變量加載到數據集中,然後從那裏填充變量。但是,我仍然遇到dataset.XMLReader(xml文件路徑)的問題,它遇到了多個根節點或不一致節點結構的問題。
問題,意見或聖盃解決方案,使我的生活更容易在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>