如果兄弟节点具有特定的值,如何select使用XPath的节点?
我有以下文件
<a> <bb>abc</bb> <cc>ccc</cc> <dd>ddd</dd> </a> <a> <bb>zz</bb> <cc>1</cc> <dd>2</dd> </a>
如果<bb>
是zz
如何使用XPath获得<cc>
的值?
不知道为什么每个人都在查询兄弟姐妹,还可以检查匹配来自<a/>
的谓词的谓词的<bb/>
元素:
//a[bb/text() = "zz"]/cc/text()
你需要的是following-sibling
XPath轴
//a/bb[text()="zz"]/following-sibling::cc[1]/text()
在这里testingXpath: http ://www.xpathtester.com/obj/b55ec3ac-dfa4-4f44-81e8-f963ea4a0625
问: 如果兄弟节点具有特定值,如何使用XPathselect一个节点?
因为只有“XPath轴”用于后续兄弟姐妹和前兄弟姐妹。 如果位置已修复,您可以使用其中的一个。
但更好:
寻找cc是父母有价值'zz'的孩子bb:
//cc[../bb='zz']"
首先,你的例子不是格式良好的XML。 俯视那个,你没有很好地描述你的意图(你究竟想在什么情况下select什么?),我假设你想这样做:
//cc[preceding-sibling::bb[text()="zz"]]/text()
它select
TEXT VALUES OF ALL <CC> ELEMENTS //cc /text() THAT HAVE A PRECEDING SIBLING <BB> [preceding-sibling::bb ] THAT HAS TEXT VALUE EQUAL TO "zz" [text()="zz"]
你可以写也是
//bb[text()="zz"]/following-sibling::cc/text()
请看规范 ,它有一些非常好读的例子 ,你会学到很多东西。
//a/cc[../bb='zz']/text()
// a:无论它在哪里,都select所有的“a”元素。
// a / cc:select“a”元素的子元素“cc”(不pipea在哪里)。
..:select当前节点的父节点。
[../bb='zz']:兄弟'bb'元素的值是zz。
参考: http : //www.w3schools.com/xsl/xpath_syntax.asp