0

私が取り組んでいるタイマー アプリケーションでは、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>
4

1 に答える 1

0

問題は解決され、昔ながらの「一歩後退、二歩前進」の方法を利用して解決しました。

XML ファイルに保存したいデータをデータ テーブルとクラス変数のグループに格納する代わりに、同じデータセット内の別々のデータ テーブルに両方を配置しています。この時点で行う必要があるのは、dataset.GetXML だけです。これは、外部ファイルに保存されます。リロードするには、dataset.ReadXML(xmlFilename) を使用するだけです。

問題が解決しました。これが同様のピクルスの誰かに役立つことを願っています。

于 2013-02-19T20:38:13.113 に答える