在Javascript中循环使用XML

Loop through XML in Javascript

本文关键字:XML 循环 Javascript      更新时间:2023-09-26

由于某种原因,我不知道如何循环使用这个xml。我可以从第一个父节点和它下面的子节点中获取数据,但无法将数据传递到第二个父节点。任何帮助都会很棒。我使用的是xmlReader。

function saveData(dataObject) {
        var GameData = Parse.Object.extend("AllGameData");
        var GameData = new GameData();
        dataObject.forEach(function (element, i) {
            GameData.set(element.name, element.data);
        });
        GameData.save();
    }    
Parse.Cloud.httpRequest({
url: xmlURL,
success: function (httpResponse) {
    var counter = 0;
    xmlreader.read(httpResponse.text, function (err, xmldata) {
        var state = xmldata.allcrosswords.StateCrossword.count();
        for(var y = 0; y < state.length; y++) {
            xmldata.allcrosswords.array[y].StateCrossword.array.forEach(function (element, i) {
                xmldata.allcrosswords.StateCrossword.array[i].game.array.forEach(function (element, j) {

                    saveData(data);
                    counter++;
                });
            });
        }
        status.success("" + counter + " row(s) inserted.");
    });
},
error: function (httpResponse) {
    status.error('Request failed with response code ' + httpResponse.status);
}

});

XML如下:

<allcrosswords>
  <StateCrossword UserId="223943">
    <game game_name="History CrossWord">
      <crossword_date_played>02/01/2014</crossword_date_played>
      <words_wrong>2</words_wrong>
      <total_score>110</total_score>
    </game>
  </StateCrossword>
  <StateCrossword StateCrossword UserId="4894734">
    <game game_name="Sports Crossword">
      <crossword_date_played>04/16/2015</crossword_date_played>
      <words_wrong>10</words_wrong>
      <total_score>12</total_score>
    </game>
  </StateCrossword>
  <StateCrossword StateCrossword UserId="6092735">
    <game game_name="Movies Crossword">
      <crossword_date_played>08/04/2014</crossword_date_played>
      <words_wrong>12</words_wrong>
      <total_score>0</total_score>
    </game>
  </StateCrossword>
</allcrosswords>

我试图解析你的xml文件,发现我可以在浏览器中加载它,所以当我检查它时,我在第二个和第三个StateCrossword元素中发现了一个问题,这里是更新xml文件

<allcrosswords>
  <StateCrossword UserId="223943">
    <game game_name="History CrossWord">
      <crossword_date_played>02/01/2014</crossword_date_played>
      <words_wrong>2</words_wrong>
      <total_score>110</total_score>
    </game>
  </StateCrossword>
  <StateCrossword UserId="4894734">
    <game game_name="Sports Crossword">
      <crossword_date_played>04/16/2015</crossword_date_played>
      <words_wrong>10</words_wrong>
      <total_score>12</total_score>
    </game>
  </StateCrossword>
  <StateCrossword UserId="6092735">
    <game game_name="Movies Crossword">
      <crossword_date_played>08/04/2014</crossword_date_played>
      <words_wrong>12</words_wrong>
      <total_score>0</total_score>
    </game>
  </StateCrossword>
</allcrosswords>

我确实尝试过用JQuery javascript、来解析它

$.ajax({
      type: "GET",
      url: "test.xml",
      dataType: "xml",
      success: function(data)
      {
        var StateCrosswords = data.getElementsByTagName("StateCrossword");
        for (var i=0; i < StateCrosswords.length; i++)
        {
          var  game = StateCrosswords.item(i).getElementsByTagName("game")[0];
          .............
        }
      }
    });