0

我正在使用 PHP 的 echo 从 php 文件(连接到我的数据库)中提取数据以输出 XML。现在我想用数据填充一个数组,但找不到方法。我已经搜索并找到了 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'],
            ];

非常感谢。我希望有人能帮助我。

4

1 回答 1

1

如果您需要一种仅将 XML 转换为 JS 数组的 javascript 方法,您可能需要查看 JXON。是一篇非常好的文章,其中包含一些算法来做你想做的事。

我的回答要求您有simpleXML可用于您的 php 安装。另请注意,由于 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>';
于 2013-07-02T20:54:21.853 回答