2014-02-26 111 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