2010-05-31 4 views
0

Après avoir obtenu un tel document XML avec l'aide de ajax (données var = request.responseXML;), comment puis-je parse les contacts ?:Comment analyser ce document XML?

<?xml version="1.0" encoding="UTF-8"?> 
<Alladresses xmlns="http://somedomain.org/doc/2007-08-02/"> 
<Owner> 
    <ID>gut74hfowesdfj49fjsifhryh8e8rta3uyhw4</ID> 
    <Name>Mr.Bin</Name> 
</Owner> 
<Contacts> 
    <Person> 
    <Name>Greg</Name> 
    <Phone>3254566756</Phone> 
    </Person> 
    <Person> 
    <Name>Smith</Name> 
    <Phone>342446446</Phone> 
    </Person> 
    <Person> 
    <Name>Yuliya</Name> 
    <Phone>675445566867</Phone> 
    </Person> 
</Contacts> 
</Alladresses> 

Répondre

0

request.responseXML vous donne un XML Document node. Cela fonctionne de manière similaire au DOM HTML (en fait, le DOM HTML est une extension du DOM XML 'Core'), donc vous pouvez utiliser plusieurs des mêmes méthodes que sur les nœuds HTML, par exemple:

var doc= request.responseXML; 
var contacts= doc.getElementsByTagName('Contacts')[0]; 
var people= contacts.getElementsByTagName('Person'); 

var details= []; 
for (var i= 0; i<people.length; i++) { 
    var person= people[i]; 
    var name= person.getElementsByTagName('Name').firstChild.data; 
    var phone= person.getElementsByTagName('Phone').firstChild.data; 
    details.push({name: name, phone: phone}); 
} 
var doc= request.responseXML; 
var contacts= doc.getElementsByTagName('Contacts')[0]; 
var people= contacts.getElementsByTagName('Person'); 

var details= []; 
for (var i= 0; i<people.length; i++) { 
    var person= people[i]; 
    var name= person.getElementsByTagName('Name').firstChild.data; 
    var phone= person.getElementsByTagName('Phone').firstChild.data; 
    details.push({name: name, phone: phone}); 
} 

Naturellement, il existe de nombreuses façons de rendre ce type de tâche d'analyse plus robuste et générique, de bibliothèques utiles, de prise en charge de XPath, etc. Mais dans la nature de base, il est peu différent du travail HTML DOM.