我试图找出如何通过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;
有人给我一些提示吗?
答案 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