在Javascript中打开更多XML

时间:2013-04-23 10:03:16

标签: javascript xml multifile

我需要使用单个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"));

所以我可以循环信息,但我无法做到这一点。

你能帮我吗?

1 个答案:

答案 0 :(得分: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"]');