簡體   English   中英

不使用XPath加載PHP XML

[英]PHP XML Not loading using XPath

我正在加載XML文件,如下所示:

$places=simplexml_load_file("http://www.43places.com/service/search_places?api_key=1234&q=america");
$allPlaces=$places->xpath('//place');
foreach($allPlaces as $title)
{
    echo "a";
}

簡單測試一下,文件已正確加載,您可以在此處查看XML文件。

知道為什么它沒有循環嗎?

我不確定為什么XPath無法使用,但是根據我在那里看到的XML結構,您真的不需要XPath。 SimpleXMLElements可能有點看跌,但是使用這種備用循環結構將非常容易:

foreach( $places->place as $place )
{
    echo "a";
}

而且,您根本不需要xpath查詢的開銷。 您想要的結構已經在那里。

它沒有循環,因為它不返回任何節點。 那為什么呢?

從技術上講, <place>元素位於其自己的命名空間內: http://www.43places.com/xml/2005/rc# : http://www.43places.com/xml/2005/rc# ,因此place只是所謂的元素本地名稱 ,而不是全名。 Xpath不接受全名,但是您可以使用您選擇的名稱(前綴)為xpath操作注冊一個名稱空間,然后在xpath查詢中使用它:

$places->registerXPathNamespace("a", "http://www.43places.com/xml/2005/rc#");
$allPlaces = $places->xpath('//a:place');

現在,此查詢將選擇您要查找的20個左右的place元素。

另請參見: SimpleXML:使用包含名稱空間的XML

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM