2010-10-18 13 views
13

Ho un server che risponde alla richiesta con XML, voglio analizzarlo in javascript. Mi piace molto il parser xc actionscript che è davvero facile da usare. Sto vagando c'è un modo molto semplice/diretto per analizzare l'XML che ho scaricato dal server?qual è il modo migliore per analizzare la risposta xml in AJAX

L'utilizzo ideale dovrebbe essere:

FetchXML nuova XMLParser. parser.parse accedere al documento.

btw Ho intenzione di utilizzare jquery.

risposta

19

Un regolare $.ajax con dataType: "xml" farà il trucco, allora è possibile sfogliare i contenuti con i selettori di jQuery come se fosse una semplice pagina web (ad esempio, la funzione attr nell'esempio per recuperare il "codice" campo di ciascun nodo libro o la funzione find per trovare tipi di nodi specifici).

Ad esempio, si potrebbe fare questo per trovare un libro specifico per titolo:

$(xml).find("book[title='Cinderella']") 

dove xml sono i dati del gestore success riceve da $.ajax.


Ecco l'esempio completo:

<!DOCTYPE html> 
<html> 
<head> 
<title>jQuery and XML</title> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<meta name="language" content="en" /> 
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script> 
</head> 
<body 

<div id="output"></div> 

<script type="text/javascript"> 
$(document).ready(function(){ 
$.ajax({ 
    type: "GET", 
    dataType: "xml", 
    url: "example.xml", 
    success: function(xml){ 
    $(xml).find("book").each(function(){ 
    $("#output").append($(this).attr("code") + "<br />"); 
    }); 
    } 
}); 
}); 
</script> 


</body> 
</html> 

E un file XML corrispondente:

<?xml version="1.0" encoding="UTF-8"?> 
<books title="A list of books"> 
<book code="abcdef" /> 
<book code="ghijklm"> 
    Some text contents 
</book> 
</books> 
+0

Grazie! Se non voglio trovare e il risultato contiene solo " come posso fare riferimento all'elemento" book "? –

+1

$ (xml) .find (" book ") ti fornisce un elenco di i nodi del libro. Nel ciclo "ciascuno", $ (questo) è un riferimento al nodo del libro. – wildpeaks

+0

sì ma per il mio codice non voglio trovare perché non è necessario, ho solo un elemento del libro, è possibile per fare riferimento direttamente senza trovare? –

3

Restituisci i dati con il tipo di contenuto corretto (ad esempio application/xml) e XHR lo analizzerà per te.

Vedere anche: l'argomento dataType per jQuery's ajax method.

Problemi correlati