C#XDocument元素在他的父元素之外

时间:2017-01-27 06:58:02

标签: c#

使用linq xDocument我想检查一个元素是否在父元素之外。

示例XML:

<document>
<x>
<p>text</p>
</x>--this is correct

<p>some text</p> --this should be inside <x> tag
<x>
<p>text</p>
</x>--this is correct
</document>

预期:

<document>
<x>
<p>text</p>
</x>
<x>
<p>some text</p>
<p>text</p>
</x>
</document>

1 个答案:

答案 0 :(得分:1)

LinqToXml提供了有关xml中元素的大量信息。 关于XElements的属性是.Parent属性。

所以你可以使用这样的东西

var unexpectedParagraphs = xdoc.Root
      .Elements()
      .Where(x => x.Parent.Name != "x");

这将返回任何直接子节点的元素,其父节点未命名为&#39; x&#39;。

如果您不熟悉,可以查看此链接以开始使用linqToXml: https://msdn.microsoft.com/en-us/library/mt693062.aspx