2012-08-02 48 views
0

我有一個計時器應用程序,我正在使用兩個單獨的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> 

回答

0

問題是解決了,我利用年齡做了老一套「退一步,前進兩步」的方法。

除了將要保存在XML文件中的數據保存在數據表和一組類變量中之外,我將這兩個數據表放在同一個數據集中的單獨數據表中。此時需要完成的是一個數據集.GetXML,然後將其保存到極值文件中。要重新加載,只需使用dataset.ReadXML(xmlFilename)。

問題解決。希望這可以幫助類似泡菜的人。