C# XML反序列化和值分配问题

C# XML反序列化和值分配问题,c#,xml-serialization,C#,Xml Serialization,我似乎无法理解以下内容,我已经尽量利用这里的可用主题 我有以下文件 <?xml version="1.0"?> <Root> <Data> <Package> <GWT_></GWT_> <ALT_></ALT_> <SAT__></SAT__> </Package> <Package>

我似乎无法理解以下内容,我已经尽量利用这里的可用主题

我有以下文件

<?xml version="1.0"?>
<Root>
  <Data>
    <Package>
      <GWT_></GWT_>
      <ALT_></ALT_>
      <SAT__></SAT__>
    </Package>
    <Package>
      <GWT_></GWT_>    
      <ALT_></ALT_>
      <SAT__></SAT__>
    </Package>
  </Data>
</Root>
以及功能:

    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();          

        }
    }
首先,我得到一个错误,它不能隐式地将“Root”转换为“Package”

我需要一种方法来分配被读取的值(例如GWT_uu“值”),比如标签。 正如您所看到的,有多个“包”的值,所以我需要一个函数在这些包之间来回切换


谢谢你的帮助

这对我使用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;}
}

您是否尝试序列化一些(虚拟)数据以验证您是否具有生成XML的正确属性?(见鬼,这甚至值得作为一个单元测试来做)
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;}
}