0

我是 JavaScript 新手,我正在尝试读取 XML 文件并将其内容提取到 JavaScript 变量中。

这是我的 XML 文件内容的示例:

<!-- Locations of current projects -->
<projectsites>
 <li>
  <title>Battling Ninja Army</title>
  <location>Osaka, Japan</location>
  <lat>34.69</lat>
  <lon>135.50</lon>
 </li>
 <li>
  <title>Software Development</title>
  <location>Vienna, Austria</location>
  <lat>48.21</lat>
  <lon>16.37</lon>
 </li>
</projectsites>
<!-- Locations of current developers -->
<developersites>
 <li>
  <title>Brisbane office</title>
  <location>Brisbane, Australia</location>
  <lat>-27.4</lat>
  <lon>153</lon>
 </li>
 <li>
  <title>Phillipines Office</title>
  <location>Manilla, Phillipines</location>
  <lat>14.7</lat>
  <lon>121</lon>
 </li>
</developersites>

那么,假设我有比这更多的数据,我可以在 JavaScript 中创建一个循环或嵌套循环来读取 XML 文件并将数据提取到数组中吗?我感兴趣的元素示例有:projectsites.titleprojectsites.lat和。developersites.titledevelopersites.lat

4

2 回答 2

1

使用 jQuery 解析 xml,这是我将 xml 转换为 json 的函数的实现:

function xmlToObject(xml) {
    if (xml instanceof jQuery) xml = xml.get(0);
    var o = {};

    function level(node, obj) {
        obj[node.nodeName] = {};
        $.each(node.attributes, function (i, attr) {
            obj[node.nodeName][attr.name] = attr.value;
        });
        $(node).children().each(function (i, child) {
            level(child, obj[node.nodeName]);
        });
    }
    if (xml.nodeName === '#document' || xml.nodeName === 'document') 
        $(xml).children().each(function (i, child) {
            level(child, o);
        });
    else 
        level(xml, o);

    return o;
};
于 2012-09-06T06:40:35.887 回答
0

您可以使用 jQuery 轻松获取 xml 数据并对其进行解析。这是一个例子:

var projectsite_titles = [];
$.get('myXmlFile.xml', function(responseXml) {
   $(responseXml).find('projectsites li title').each(function () {
      projectsite_titles.push($(this).text());
   });
}, 'xml');
于 2012-09-06T06:33:24.640 回答