2013-04-23 4 views
0

하나의 자바 스크립트 파일을 사용하여 하나 이상의 XML 파일을 열어야합니다. XML은 동일한 구조를 가지고 있지만 특정 경우에 동일한 구조로 25 개의 XML 파일을 열어야합니다.자바 스크립트에서 더 많은 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")); 

그래서 내가 할 수있는 루프 정보를 정기적으로하지만, 내가이 일을 할 수 아니에요.

제발 도와 주실 수 있습니까?

var existKind = infos[0].querySelectorAll('[kind]'); 
: 당신이 늘 먼저 정보 노드의 '종류'속성을 가진 요소를 발견하면 다음

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

을이 같은 document.querySelector 또는 document.querySelectorAll를 사용 -

첫 번째 단계는

답변

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")); 

모든 정보에서 :

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

값 :

var existKindWithValue = infos[0].querySelectorAll('[kind="2"]'); 
+0

내 대답이 지연되어 죄송합니다. 이 코드는 작동하지만 "infos"하위 수준의 다른 속성을 읽어야 할 때 문제가 발견되었습니다. ...입니다. 종류 및 페이지 속성을 읽으려면 어떻게해야합니까? – user2174050

+0

adited 대답을 읽으십시오. – 3y3