2013-08-01 57 views
0

我想確定術語「B & B Hotel Hamburg-Altona」在XML數據中的位置。在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]'); 

,但我得到的錯誤:

Warning: SimpleXMLElement::xpath(): Invalid expression in C:\xampp_18\htdocs\xmlposition.php on line 14

Warning: SimpleXMLElement::xpath(): xmlXPathEval: evaluation failed in C:\xampp_18\htdocs\xmlposition.php on line 14

回答

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::*) 
+0

中的XPath代碼不提供的酒店海芬漢堡 $ apiUmgebungUrl =「HTTPS的位置數://maps.googleapis。 ?COM /地圖/ API /地點/ TEXTSEARCH/XML查詢=酒店+在+漢堡&半徑= 500&傳感器=真鍵=祕密密鑰「; $ xml = new SimpleXMLElement($ apiUmgebungUrl,null,true); $ q = $ xml-> xpath('result [contains(name,「Hotel Hafen Hamburg」)] [position()<= 1]'); print_r($ q ['0']); – susi87

+0

@ susi87:'count(之前的兄弟姐妹:: *)'給出位置。 – choroba

+0

但爲什麼數組是空的? – susi87