将MySQL PHP - XML转换为JS数组

时间:2013-07-02 20:36:04

标签: arrays google-maps xmlhttprequest

我使用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'],
            ];

非常感谢你。我希望有人可以帮助我。

1 个答案:

答案 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>';