我使用PHP的echo输出XML来从php文件(连接到我的数据库)中提取数据。现在我想用数据填充数组,但找不到方法。我搜索并找到了JSON,AJAX,XMLHttpRequest的示例,但没有任何作用。
基本上我需要转换它:
//从.php文件解析的XML
<markers>
<marker name="Bikes" desc="116 18" lat="4.698479" lon="-74.048111" tipo="Store"/>
<marker name="Kooning" desc="116 16" lat="4.697316" lon="-74.044807" tipo="Store"/>
<marker name="Bike House" desc="15 104" lat="4.692983" lon="-74.044952" tipo="Store"/>
</markers
进入这个:
// JS
var Store = [
['Bikes', 4.698479, -74.048111, '116 18'],
['Kooning', 4.697316, -74.044807, '116 16'],
['Bike House', 4.692983, -74.044952, '15 104'],
];
非常感谢你。我希望有人可以帮助我。
答案 0 :(得分:1)
如果您只需要以javascript方式将XML转换为JS数组,那么您可能需要查看JXON。 Here是一篇非常好的文章,有一些算法可以做你想做的事。
我的回答要求你的php安装有simpleXML。另请注意,由于xml结构,我的回答是将desc属性放在JS数组中的第二位,并在数组中包含tipo属性。如果您需要按照所描述的确切顺序和值的数组,那么您将需要以任意顺序访问属性。
<?php
$xml = <<<xml
<markers>
<marker name="Bikes" desc="116 18" lat="4.698479" lon="-74.048111" tipo="Store"/>
<marker name="Kooning" desc="116 16" lat="4.697316" lon="-74.044807" tipo="Store"/>
<marker name="Bike House" desc="15 104" lat="4.692983" lon="-74.044952" tipo="Store"/>
</markers>
xml;
$markers = new SimpleXMLElement($xml);
foreach ($markers->marker as $marker) {
$mark_arr = array();
foreach ($marker->attributes() as $attr) {
$mark_arr[] = (string) $attr;
}
$marks_arr[] = $mark_arr;
}
echo '<script>var Store = '.json_encode($marks_arr).';</script>';
?>
一个可能更有用的答案是将其导出到JS对象,以便您可以通过键访问这些值。这是答案:
<?php
$xml = <<<xml
<markers>
<marker name="Bikes" desc="116 18" lat="4.698479" lon="-74.048111" tipo="Store"/>
<marker name="Kooning" desc="116 16" lat="4.697316" lon="-74.044807" tipo="Store"/>
<marker name="Bike House" desc="15 104" lat="4.692983" lon="-74.044952" tipo="Store"/>
</markers>
xml;
$markers = new SimpleXMLElement($xml);
foreach ($markers->marker as $marker) {
$mark_arr = array();
foreach ($marker->attributes() as $key => $attr) {
$mark_arr[$key] = (string) $attr;
}
$marks_arr[] = $mark_arr;
}
echo '<script>var Store = '.json_encode($marks_arr).';</script>';