如果兄弟节点具有特定的值,如何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