私が取り組んでいるタイマー アプリケーションでは、2 つの個別の XML ファイルを使用してデータを保存しています。XML ファイル 1 には、割り当てられた時間とゲーム名の概要データが格納されます。XML ファイル 2 には、イベントの物語に近いデータセットの内容が格納されています。これにより、ユーザーは保存されたデータをロードし、基本的に中断したところから開始できます。XML ファイル 1 にシリアライズ/デシリアライズを使用し、値を変数と dataset.XMLReader(xml ファイル パス) にロードしてデータセットをロードしています。
2 つの XML ファイルを結合したいのですが、2 時間ほど検索してさまざまなコードを試してみた結果、行き詰まりました。私がやろうとしていることは可能ですか?
私の考えの 1 つは、XML ファイル 1 のシリアライゼーション/デシリアライゼーションを使用する代わりに、これらの変数をデータセットにも読み込むようにアプリケーションを再構築し (ugh)、そこから変数を設定することでした。しかし、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>