确定xml中的位置

时间:2013-08-01 20:34:04

标签: php xml xpath position

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

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

1 个答案:

答案 0 :(得分: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::*)