通过simplexml解析xml

时间:2014-02-26 07:38:04

标签: php xml simplexml

我试图找出如何通过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错误。我的建议是,in in local-description会阻止代码正确运行。

我。即这段代码:

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

有人给我一些提示吗?

2 个答案:

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

答案 1 :(得分:0)

可能是你应该通过调用一个在AJAX中执行该操作的函数来解析所有xml数据。 然后,在此函数中,您发送一个包含所需数据的响应,并将这些数据与JS一起附加到DOM中。

我需要时发现这篇文章: convert xml into array