我需要使用单个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"));
所以我可以循环信息,但我无法做到这一点。
你能帮我吗?
答案 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"]');