C# 在列表中递归读取XML树结构<;T>;

C# 在列表中递归读取XML树结构<;T>;,c#,.net,xml,C#,.net,Xml,我有一个XML文件,除其他内容外,还有以下结构 <start something="1"> <into intoSomething="1"> <node nodeAtt="1"> <thisChanges change="1"/> </node> <node nodeAtt="1"> <thisChanges change="1"/> &

我有一个XML文件,除其他内容外,还有以下结构

<start something="1">
    <into intoSomething="1">
    <node nodeAtt="1"> 
        <thisChanges change="1"/>
    </node>
    <node nodeAtt="1"> 
        <thisChanges change="1"/>
    </node>
    <start something="1">
        <node nodeAtt="1"> 
            <thisChanges change="1"/>
        </node>
        <node nodeAtt="1"> 
            <thisChanges change="1"/>
        </node>
        <start something="1">
            <node nodeAtt="1"> 
                <thisChanges change="1"/>
            </node>
            <node nodeAtt="1"> 
                <thisChanges change="1"/>
            </node>
        </start>
        <node nodeAtt="1"> 
            <thisChanges change="1"/>
        </node>
        <node nodeAtt="1"> 
            <thisChanges change="1"/>
        </node>
    </start>
    <node nodeAtt="1"> 
        <thisChanges change="1"/>
    </node>
    <node nodeAtt="1"> 
        <thisChanges change="1"/>
    </node>
</start>

在.net中递归地将它们读入列表的最佳方法是什么?XML文件中还有其他内容,但我将分别处理这些部分。我还想将“节点”中的所有内容解析为字符串,而不是读取其属性


提前感谢。

这需要一个复合模式

使用列表执行此操作需要T是某种类型,可以是另一个列表或节点

至于阅读它,你听说过DOM吗


它基本上为您将xml解析为数据结构。因此,您可能正在重新设计轮子。

我建议的方法是在实例上实现
IEnumerable
。该实现将遍历xml中的树,并构建您感兴趣的
节点
实例

然后只需在上面调用
ToList

XDocument xmlFile = //use whatever source you like, doesnt even need to be an XDocument
TreeWalker walker = new TreeWalker(xmlfile);
var list = walker.ToList();

如果您确实使用
XDocument
,那么获取所有
节点
元素的一种非常简单的方法是。这将为您完成所有的“树漫游”。

您能给出一个您期望的输出示例吗?什么是
T
?我试图做的是将其读入嵌套结构,然后允许用户编辑表中的数据,然后将其写回文件。这就是为什么我希望保留为一个字符串,以便能够完全独立地编辑它。列表将把start something=“1”>保存在子元素中,并在这些子元素中保存更多的子元素,以此类推,这样我就可以轻松地遍历结构并提取数据以写回文件。与XElement相比,使用列表有什么好处?