繁体   English   中英

具有特定父级的XPath选择节点

[英]XPath Selecting Node with specific parent

我有一个看起来像这样的XML:

<item cid="0x1310">
    <item cid="0x15ad">
    </item>

    <item cid="someOtherCode">
        <item cid="0x15ad">
        </item>
    </item>
</item>

我想选择cid="0x15ad"特定于cid="0x1310"下的nodes

到目前为止,我有:

//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();

返回包含一项的列表。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM