2013-04-23 2 views
0

Мне нужно открыть несколько файлов XML, используя один файл javascript. XML имеет одинаковую структуру, но для конкретного случая я должен открыть 25 XML-файлов с одинаковой структурой.Открыть больше XML в Javascript

Сейчас я закрепили таким образом, но это слишком дорого, и я не могу сделать петлю:

 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 = []; // or I've tryed also x= new Array() 
    x[0]=xmlDoc1.getElementsByTagName("infos"); 
    x[1]=xmlDoc2.getElementsByTagName("infos"); 
    //... 

и хочет читать Infos с инструкцией, как это:

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

Так что я могу информацию о петлевой, но я не в состоянии сделать это.

Вы можете мне помочь?

ответ

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 

Тогда, если вы не найдете элемент с 'добрым' атрибут в первом информационном узле:

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

Во всех Infos:

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

Со значением:

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

Хорошо, извините за задержку в моем ответе. Этот код работает, но я нашел проблему, когда должен прочитать другой атрибут на подуровне «информация». У меня есть .... Как я могу прочитать атрибут kind и page? – user2174050

+0

Прочитанный ответ. – 3y3

 Смежные вопросы

  • Нет связанных вопросов^_^