C#linq到xml,获取包含节点的列表?

C#linq到xml,获取包含节点的列表?,c#,treeview,linq-to-xml,elements,nodes,C#,Treeview,Linq To Xml,Elements,Nodes,这是我正在使用的测试xml: <categories> <category id="1" name="Test1"> <category id="2" name="Test2"> <misc id="1"></misc> </category> </category> <category id="3" name="Test3"> <misc id=

这是我正在使用的测试xml:

<categories>
<category id="1" name="Test1">
    <category id="2" name="Test2">
        <misc id="1"></misc>
    </category>
</category>    
<category id="3" name="Test3">
    <misc id="2"></misc>
</category>    
但是我如何在树视图中保持结构

这应该是这样的:

测试1

->测试2


测试3如果我没弄错的话,可能是这样的吧?(我没有测试过)

“我只想要具有名称类别的元素”-我不明白你在这里的意思?但是,如果您只想选择那些具有“name”属性的元素,那么这应该可以:

   ...
   var d = from t in e.Elements("category")
           where t.Attribute("name") != null
           select new Category()
           ...
我知道上面的部分(“name”属性部分)不是您想要的,但我把它放在那里了。我已针对以下内容测试了代码:

XDocument doc = XDocument.Parse(@"<categories>
<category id=""1"" name=""Test1"">
    <category id=""2"" name=""Test2"">
        <misc id=""1""></misc>
    </category>
</category>    
<category id=""3"" name=""Test3"">
    <misc id=""2""></misc>
</category>  
</categories>");
            var structure = CategoryTreeStructure(doc.Root);
XDocument doc=XDocument.Parse(@)
");
var结构=类别树结构(文档根);

事实上,我找到了这个链接,它完全符合你的要求:)而且它没有LINQ,所以我认为它应该得到另一个答案


对不起,我的错。我只想要称为category的元素,比如:啊,好吧,那么上面的代码应该可以:)我现在已经测试过了,它可以工作了。我对代码做了一些小的修改。
var structure = CategoryTreeStructure(doc.Root);
   ...
   var d = from t in e.Elements("category")
           where t.Attribute("name") != null
           select new Category()
           ...
XDocument doc = XDocument.Parse(@"<categories>
<category id=""1"" name=""Test1"">
    <category id=""2"" name=""Test2"">
        <misc id=""1""></misc>
    </category>
</category>    
<category id=""3"" name=""Test3"">
    <misc id=""2""></misc>
</category>  
</categories>");
            var structure = CategoryTreeStructure(doc.Root);