0

我想确定术语“B&B Hotel Hamburg-Altona”在 XML 数据中的位置。

XML如下:

<PlaceSearchResponse>
<status>OK</status>
<result>
<name>Hotel Grüner Berg</name>
</result>
<result>
<name>Hotel ABC</name>
</result>
<result>
<name>Hotel Lorem Ipsum</name>
</result>
<result>
<name>B&B Hotel Hamburg-Altona</name>
</result>
<result>
<name>Hotel Lorem Ipsum</name>
</result>
<result>
<name>Hotel Lorem Ipsum</name>
</result>

我的php脚本:

$apiUmgebungUrl = "https://maps.googleapis.com/maps/api/place/textsearch/xml?query=Hotel+in+Hamburg&radius=500&sensor=true&key=geheimerkey";

$xml = new SimpleXMLElement($apiUmgebungUrl, null, true);
echo $q = $xml->xpath('result/[contains(name,"B&B Hotel Hamburg-Altona")][position() <= 1]');  

但我得到错误:

警告:SimpleXMLElement::xpath():第 14 行 C:\xampp_18\htdocs\xmlposition.php 中的表达式无效

警告:SimpleXMLElement::xpath(): xmlXPathEval: 第 14 行 C:\xampp_18\htdocs\xmlposition.php 中的评估失败

4

1 回答 1

0

谓词(中的条件[])不应/与元素名称分开。

result[contains(name,"B&B Hotel Hamburg-Altona")][position() <= 1]

另请注意,您的 XML 不正确:&应表示为&amp;.

要获得该位置,请计算前面的兄弟姐妹的数量:

count(result[contains(name,"B&B Hotel Hamburg-Altona")][position() <= 1]/preceding-sibling::*)
于 2013-08-01T20:54:46.480 回答