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