C# 使用相同的节点值遍历XML
我很难在XML文件中循环并在例如TreeView中表示它。我的XML的结构如下所示:C# 使用相同的节点值遍历XML,c#,xml,loops,recursion,linq-to-xml,C#,Xml,Loops,Recursion,Linq To Xml,我很难在XML文件中循环并在例如TreeView中表示它。我的XML的结构如下所示: <Categories> <Category Name="Cat Level1"> <Categories> <Category Name="ChildCat Level 2"> <Categories> <Category Name="ChildCat Level3_1" />
<Categories>
<Category Name="Cat Level1">
<Categories>
<Category Name="ChildCat Level 2">
<Categories>
<Category Name="ChildCat Level3_1" />
<Category Name="ChildCat Level3_2" />
</Categories>
</Category>
</Categories>
</Category>
</Categories>
如果使用
元素
方法而不是子体
方法,它将只返回直接子级。这应该可以解决问题
元素
文档是。如果使用元素
方法而不是子体
方法,它将只返回直接子体。这应该可以解决问题
元素
文档是。您是否尝试过使用元素
而不是子体
?听起来它只返回直接的子对象。那么我应该在哪里使用元素而不是后代呢?到处都有,或者在每个零件上,或者…?找到了!:)把你的评论写在答案里,我会把它标记为正确答案!;)您是否尝试过使用元素
而不是子体
?听起来它只返回直接的子对象。那么我应该在哪里使用元素而不是后代呢?到处都有,或者在每个零件上,或者…?找到了!:)把你的评论写在答案里,我会把它标记为正确答案!;)
private void CreateTreeStructure(XDocument xDoc)
{
foreach(var element in xDoc.Descendants("Category"))
{
var node = new TreeNode(element.Attribute("Name").Value);
treeView1.Nodes.Add(node);
ReadChildren(element.Descendants("Categories"), node);
}
}
private void ReadChildren(IEnumerable<XElement> element, TreeNode node)
{
foreach (var child in element.Descendants("Category"))
{
var childNode = new TreeNode(child.Attribute("Name").Value);
node.Nodes.Add(childNode);
ReadChildren(child.Descendants("Categories"), childNode);
}
}
private void CreateTreeStructure(XDocument xDoc)
{
foreach (var element in xDoc.Root.Elements("Category"))
{
var node = new TreeNode(element.Attribute("Name").Value);
treeView1.Nodes.Add(node);
if (element.HasElements)
ReadChildren(element.Element("Categories"), node);
}
}
private void ReadChildren(XElement element, TreeNode node)
{
foreach (var child in element.Elements("Category"))
{
var childNode = new TreeNode(child.Attribute("Name").Value);
node.Nodes.Add(childNode);
if(child.HasElements)
ReadChildren(child.Element("Categories"), childNode);
}
}