我有一个如下所示的XML:
<item cid="0x1310">
<item cid="0x15ad">
</item>
<item cid="someOtherCode">
<item cid="0x15ad">
</item>
</item>
</item>
我想选择具有nodes
cid="0x15ad"
的{{1}} cid="0x1310"
到目前为止,我有:
//item[not(@name='Version') and(@cid='0x1310')]//item[@cid='0x15ad']
问题是这会给我带来一切加上其他cid
值以下的结果。
如何具体检索parent
下的那些?
答案 0 :(得分:0)
//
operator选择当前节点(或文档)的所有后代,而不仅仅是直接子节点。试试这个:
//item[not(@name='Version') and(@cid='0x1310')]/item[@cid='0x15ad']
但是,如果您只想在cid="0x15ad"
下使用cid="0x1310"
的节点,请使用:
//item[@cid='0x1310']/item[@cid='0x15ad']
Demonstration(点击&#39;测试&#39;查看结果)
答案 1 :(得分:0)
我相信你需要的是:
//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();
返回包含一个项目的列表。