XPath命令,为子元素和孙元素提供条件



我想在Java 中使用XPath从XML文件中获取特定的节点值

<country>
<countryName>India</countryName>
<city>
<name>Mumbai</name>
<hotel>
<hotelName>Marriott</hotelName>
<capacity>500</capacity>
</hotel>
<hotel>
<hotelName>ITC</hotelName>
<capacity>400</capacity>
</hotel>
</city>
<city>
<name>Bangalore</name>
<hotel>
<hotelName> ITC</hotelName>
<capacity>250</capacity>
</hotel>
</city>
</country>
<country>
<countryName>Australia</countryName>
<city>
<name>Sydney</name>
<hotel>
<hotelName>Marriott</hotelName>
<capacity>200</capacity>
</hotel>
</city>
</country>

现在,我想要使用xpath命令从特定国家/地区获得酒店容量。情况是这样的-在**国家=印度,城市=孟买,酒店=万豪**

可能会有更多的国家和城市拥有相同的酒店名称。

我做的是

//country[normalize-space(name)="India" and normalize-space(city/name)="Mumbai" and normalize-space(city/hotel)="Marriott"]/city/capacity/text()

但这给了我印度国内所有酒店容量的输出!

请帮助执行命令,我不知道哪里出了问题,也不知道应该更改

方法中的谓词(方括号中的条件(是根据子/孙节点的存在来选择一个国家,然后选择该国家内的所有城市/容量。如果你总是打算针对一家特定的酒店,那么将谓词与层次结构的每个级别相关联,例如:

//country[normalize-space(countryName)="India"]/city[normalize-space(name)="Mumbai"]/hotel[normalize-space(hotelName)="Marriott"]/capacity/text()

返回500。这选择了名为"的酒店的容量文本;万豪酒店;在名为";孟买";在被命名为";印度";。

最新更新