C# 如何从xml C中读取树#

C# 如何从xml C中读取树#,c#,xml,C#,Xml,我有下面的课用来养一棵树 public class TreeNode { private Dictionary<string, DataInfo> node; private List<TreeNode> children = new List<TreeNode>(); ... ... } 我在这个类中创建了一个方法来将这个树节点保存到XML中。XML看起来像: <Tree> <Node>

我有下面的课用来养一棵树

public class TreeNode
{
    private Dictionary<string, DataInfo> node;
    private List<TreeNode> children = new List<TreeNode>();
    ...
    ...
}
我在这个类中创建了一个方法来将这个树节点保存到XML中。XML看起来像:

<Tree>
  <Node>
    <Item Type="System.String">
      <Property>Name</Property>
      <Value>v1</Value>
    </Item>
    <Item Type="System.Int32">
      <Property>i</Property>
      <Value>1</Value>
    </Item>
    <Node>
      <Item Type="System.String">
        <Property>Name</Property>
        <Value>v2</Value>
      </Item>
      ...
      ...
      <Node>
          ...
          ...

名称
v1
我
1.
名称
v2
...
...
...
...
如何解析此XML文件以读入我的TreeNode对象?任何线索/帮助都会有帮助

     XmlDataDocument xmlReaderDoc = new XmlDataDocument();
            FileStream xmlFileStream = new FileStream(F_ECAS_CONFIG.xlmfile_load_path, FileMode.Open, FileAccess.Read);
            xmlReaderDoc.Load(xmlFileStream);

            System.Xml.XmlElement root = xmlReaderDoc.DocumentElement;
            XmlNodeList messageList = root.GetElementsByTagName("Message");

            foreach (System.Xml.XmlNode message in messageList)
            {
                XmlNodeList childnodeList = message.ChildNodes;
                foreach (System.Xml.XmlNode childNode in childnodeList)
                {
                    if (childNode.InnerText.IndexOf("CAS MESSAGE") != -1)
                    {
                    }
                    else if (childNode.InnerText.IndexOf("casTextLine") != -1)
                    {
                        Cl_Ecas_ADE.textline_path.Add(childNode.InnerText); 
                    }
                    else if (childNode.InnerText.IndexOf("casLevel") != -1)
                    {

                        Cl_Ecas_ADE.cas_level_path.Add(childNode.InnerText);
                    }
                    else if (childNode.InnerText.IndexOf("casAckLine") != -1)
                    {
                        Cl_Ecas_ADE.ack_line_path.Add(childNode.InnerText);
                    }

                }
            }

这是我在我的案例中尝试的一个示例,它有效..根据您的代码进行修改。。。至少您会了解如何在XML中读取树

LINQ to XML是解析XML最简单的方法。您可以通过这种方式直接从XML创建节点
     XmlDataDocument xmlReaderDoc = new XmlDataDocument();
            FileStream xmlFileStream = new FileStream(F_ECAS_CONFIG.xlmfile_load_path, FileMode.Open, FileAccess.Read);
            xmlReaderDoc.Load(xmlFileStream);

            System.Xml.XmlElement root = xmlReaderDoc.DocumentElement;
            XmlNodeList messageList = root.GetElementsByTagName("Message");

            foreach (System.Xml.XmlNode message in messageList)
            {
                XmlNodeList childnodeList = message.ChildNodes;
                foreach (System.Xml.XmlNode childNode in childnodeList)
                {
                    if (childNode.InnerText.IndexOf("CAS MESSAGE") != -1)
                    {
                    }
                    else if (childNode.InnerText.IndexOf("casTextLine") != -1)
                    {
                        Cl_Ecas_ADE.textline_path.Add(childNode.InnerText); 
                    }
                    else if (childNode.InnerText.IndexOf("casLevel") != -1)
                    {

                        Cl_Ecas_ADE.cas_level_path.Add(childNode.InnerText);
                    }
                    else if (childNode.InnerText.IndexOf("casAckLine") != -1)
                    {
                        Cl_Ecas_ADE.ack_line_path.Add(childNode.InnerText);
                    }

                }
            }