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>

それで、これよりも多くのデータがあると仮定して、XMLファイルを読み取り、データを配列に抽出するループまたはネストされたループをJavaScriptで作成できますか?私が興味を持っている要素の例はprojectsites.title、、、、projectsites.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 に答える