0

私は次のことを理解できないようで、ここで利用可能なトピックを最大限に活用しようとしました.

私は次の文書を持っています。

<?xml version="1.0"?>
<Root>
  <Data>
    <Package>
      <GWT_></GWT_>
      <ALT_></ALT_>
      <SAT__></SAT__>
    </Package>
    <Package>
      <GWT_></GWT_>    
      <ALT_></ALT_>
      <SAT__></SAT__>
    </Package>
  </Data>
</Root>

すべてを逆シリアル化するためのクラスと関数を作成しました。

クラス:

[Serializable()]
public class Package
{
    [System.Xml.Serialization.XmlElement("GWT_")]
    public string GWT_ { get; set; }

    [System.Xml.Serialization.XmlElement("ALT_")]
    public string ALT_ { get; set; }

    [System.Xml.Serialization.XmlElement("SAT__")]
    public string SAT__ { get; set; }
}

[Serializable()]
[System.Xml.Serialization.XmlRoot("Root")]
public class Root
{
    [System.Xml.Serialization.XmlArray("Data")]
    [System.Xml.Serialization.XmlArrayItem("Package", typeof(Package))]
    public Package[] Package { get; set; }
}

そして機能:

    private void dataReportToolStripMenuItem_Click(object sender, EventArgs e)
    {
        OpenFileDialog openData = new OpenFileDialog();
        openData.Filter = "Eta file|Data_*.dat
        if (DialogResult.OK == openData.ShowDialog())
        {
            Package package = null;
            string path = openData.FileName;

            XmlSeriallizerSerializer(typeof(Root));

            StreamReader reader = new StreamReader(path);
            package = (Root)serializer.Deserialize(reader);
            reader.Close();          

        }
    }

まず、「ルート」を「パッケージ」に暗黙的に変換できないというエラーが表示されます。

そして、読み取った値 (例: GWT_"value") をラベルに割り当てる方法が必要です。ご覧のとおり、値の「パッケージ」が複数あるため、これらのパッケージを前後に切り替える関数が必要です。

助けてくれてありがとう!

4

1 に答える 1

0

これはLinqPADを使用して私のために働きます

void Main()
{
    using(var stream = File.Open(@"test.xml", FileMode.Open))
    {
        var serializer = new XmlSerializer(typeof(Root));

        var root = (Root)serializer.Deserialize(stream);

        root.Dump();
    }
}

public class Package
{
    public string GWT_ { get; set; }
    public string ALT_ { get; set; }
    public string SAT__ { get; set; }
}

public class Data
{
    [XmlElement("Package")]
    public Package[] Package { get; set; }
}

public class Root
{
    public Data Data{get;set;}
}
于 2012-04-06T10:17:41.920 に答える