2014-02-26 115 views
0

我試圖弄清楚,如何通過simplexml提取下列xml數據的下拉列表。通過simplexml解析xml

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<reference:reference xmlns:resource="http://services.mobile.de/schema/resource" xmlns:ad="http://services.mobile.de/schema/ad" xmlns:seller="http://services.mobile.de/schema/seller" xmlns:financing="http://services.mobile.de/schema/common/financing-1.0" xmlns:reference="http://services.mobile.de/schema/reference"> 
<reference:item key="ABARTH" url="http://services.mobile.de/1.0.0/refdata/classes/Car/makes/ABARTH"> 
    <resource:local-description xml-lang="en">Abarth</resource:local-description> 
</reference:item> 
<reference:item key="AC" url="http://services.mobile.de/1.0.0/refdata/classes/Car/makes/AC"> 
    <resource:local-description xml-lang="en">AC</resource:local-description> 
</reference:item> 

我需要的HTML這樣的:

<select> 
<option value=„reference:item->key「>resource:local-description</option> 
</select> 

一切我嘗試致命PHP的錯誤結束。我的建議是,在本地描述 - 防止代碼正確運行。

我。即此代碼:

$properties = $content->children('reference', TRUE)->item->children('resource', TRUE); 
echo $properties->local-description; 

有人給我提示一些提示嗎?

+0

請提供完整的XML –

回答

1

你的XML是無效的,它缺少結束</reference:reference>標籤。

使用xpath選擇的命名空間數據:

$xml = simplexml_load_string($x); // assume XML in $x 

$keys = $xml->xpath("//reference:item/@key"); 
$descs = $xml->xpath("//resource:local-description"); 

現在,爲了生成輸出,這樣做:

$c = count($keys); 
$i = 0; 

for ($i = 0; $i < $c; $i++) 
    echo "key: $keys[$i] - value: $descs[$i]" . PHP_EOL; 

看到它的工作:https://eval.in/106207

+0

非常非常感謝你!這對我有效。不幸的是,在關閉xml-tag的過程中,迷失了方向。 –

0

也許你應該通過調用一個在AJAX中做這些事情的函數來解析所有的xml數據。 然後,在這個函數中,你發送一個包含你想要的數據的響應,並在你的DOM中用JS添加這些數據。

我發現這個職位時,我需要它: convert xml into array