如何过滤保持树结构的 xml 节点名称?

How to filter on a xml node name keeping the tree structure?

我想从 xml 文件中检索树结构(或节点结构),忽略某些元素。在示例中,我只想获取文件夹节点。

<Folder name="users">
     <Folder name="user1">
        <File name="file1.txt"></File>
        <Folder name="mydocuments">...</Folder>
     </Folder>
</Folder>
<Folder name="windows"></Folder>
<Folder name="temp"></Folder>

但我想保留文件夹节点的 "tree" 并注意使用如下方法丢失它:

var folders = doc.Descendants().Where(n => n.Name == "Folder");

我想要这样的东西:

Folder (users)
  |
  |__ Folder (user1)
        |
        |__ Folder (mydocuments)
Folder (windows)
Folder (temp)

如何使用 Linq To Xml?

您可以从文件夹中删除文件:

doc.Descendants("File").Remove();