具有特定父节点的XPath选择节点
本文关键字:XPath 选择 节点 父节点 | 更新日期: 2023-09-27 18:11:14
我有一个看起来像这样的XML:
<item cid="0x1310">
<item cid="0x15ad">
</item>
<item cid="someOtherCode">
<item cid="0x15ad">
</item>
</item>
</item>
我想选择nodes
和cid="0x15ad"
,它们在cid="0x1310"
到目前为止,我有:
//item[not(@name='Version') and(@cid='0x1310')]//item[@cid='0x15ad']
问题是,这给我带来了一切加上其他cid
值下的结果。
我如何具体地检索那些在其parent
之下?
//
操作符选择当前节点(或文档)的所有后代,而不仅仅是直接子节点。试试这个:
//item[not(@name='Version') and(@cid='0x1310')]/item[@cid='0x15ad']
但是如果你只想让cid="0x15ad"
在cid="0x1310"
下的节点,使用这个:
//item[@cid='0x1310']/item[@cid='0x15ad']
示范(点击"测试"查看结果)
我相信你需要的是:
//item[@cid="0x15ad" and ../@cid="0x1310"]
c#代码var xdoc = XDocument.Parse(@"
<item cid=""0x1310"">
<item cid=""0x15ad"">
</item>
<item cid=""someOtherCode"">
<item cid=""0x15ad"">
</item>
</item>
</item>
");
var items = xdoc.XPathSelectElements(@"//item[@cid=""0x15ad"" and ../@cid=""0x1310""]").ToList();