如何引用嵌套在未知数量的其他元素中的XML元素

时间:2017-07-12 01:59:27

标签: c# xml

我想引用嵌套在未知数量的其他元素中的XML元素。
例如,如果我有这样的XML文件:

<root>
    <Example>
    </Example>
</root>

我想在<Example>元素中添加一个元素。当我在根元素中添加元素时,我可以这样做(假设Doc是已定义的XDocument):

Doc.Element("root").Add(new XElement("Example"));

如果有两个,我可以这样做:

Doc.Element("root").Element("Example").Add(new XElement("newExample"))

如果我确切地知道哪些元素将在哪些元素内,这可以正常工作,因为我可以对其进行硬编码。但是,当我不知道什么元素将会是什么时,这不起作用。

我的项目是一个虚拟文件夹系统(如果你阅读this会更有意义),所以我不知道哪些元素将嵌套在什么内容中。我曾想过在List<string>中保存程序中的目录,它用于存储目录,但因为我知道如何引用元素的唯一方法是对每个元素进行硬编码。有没有办法可以引用嵌套在任何其他元素中的任何元素,而不必对每个父元素进行硬编码,这样我就可以使用像XElement.Add()这样的方法?

1 个答案:

答案 0 :(得分:2)

您可以调用Descendants()方法,该方法完全返回。

如果你想获得一个具有特定路径的特定元素,只需写一个循环:

var el = root;
foreach (var name in path)
    el = el.Element(name);