0

我需要使用单个 javascript 文件打开多个 XML 文件。XML 具有相同的结构,但对于特定情况,我必须打开 25 个具有相同结构的 XML 文件。

现在我已经用这种方式修复了,但它太贵了,我不能做一个循环:

     file1=new XMLHttpRequest();
     file2=new XMLHttpRequest(); 
     //...
     file25=new XMLHttpRequest(); 

     file1.open("GET","info1",false);
     file1.send();
     xmlDoc1=file1.responseXML; 

     file2.open("GET","info2.xml",false);
     file2.send();
     xmlDoc2=file2.responseXML;
     //... other 23 file

     x1=xmlDoc1.getElementsByTagName("infos");
     x2=xmlDoc2.getElementsByTagName("infos");

     //Then I can read the infos on all files
     id_info1 = (x1[i].getAttribute("id_info"));
     id_info2 = (x2[i].getAttribute("id_info"));
     //etc... etc..

现在我想创建一个“x”数组,例如:

     x = []; // or I've tryed also x= new Array()
     x[0]=xmlDoc1.getElementsByTagName("infos");
     x[1]=xmlDoc2.getElementsByTagName("infos");
     //...

并希望通过如下说明阅读信息:

     id_info1 = (x[0][i].getAttribute("id_info"));

所以我可以循环信息,但我不能这样做。

你能帮我吗?

4

1 回答 1

0
xml = [];
x = [];
for(var i = 0; i < 25; ++i){
  var xhr = new XMLHttpRequest();
      xhr.open("GET","info"+(i+1)+".xml",false);
      xhr.send();

      xml[i] = xhr.responseXML;
      x[i] = xml[i].getElementsByTagName("infos");
}
var id_info1 = (x[0][i].getAttribute("id_info"));

第一步 - 使用 document.querySelector 或 document.querySelectorAll,如下所示:

var infos = xml[i].querySelectorAll('infos'); //return NodeList of all infos

然后,如果您在第一个信息节点中找不到具有“kind”属性的元素:

var existKind = infos[0].querySelectorAll('[kind]');

在所有信息中:

var existKinds = xml[i].querySelectorAll('infos [kind]');

具有价值:

var existKindWithValue = infos[0].querySelectorAll('[kind="2"]');
于 2013-04-23T10:28:04.360 回答