2010-10-18 13 views
13

Tengo un servidor que la respuesta de la solicitud con XML, quiero analizarlo en el javascript. Me gusta mucho el analizador de actionscript xml que es realmente fácil de usar. Estoy deambulando ¿hay alguna manera muy fácil/directa de analizar el XML que he extraído del servidor?¿cuál es la mejor manera de analizar la respuesta XML en AJAX

El uso ideal debe ser:

FetchXML nueva XMLParser. parser.parse acceder al documento.

por cierto voy a utilizar jQuery.

Respuesta

19

Un habitual $.ajax con dataType: "xml" hará el truco, a continuación, se puede navegar por el contenido de los selectores de jQuery como si fuera una simple página web (por ejemplo, la función attr en el ejemplo para recuperar el campo "Código" de cada nodo libro o la función find para encontrar tipos de nodos específicos).

Por ejemplo, se podría hacer esto para encontrar un libro específico por título:

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

donde xml son los datos al controlador de success recibe de $.ajax.


Aquí está el ejemplo 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> 

Y un archivo XML coincidente:

<?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

Gracias! Si no quiero encontrarlo y el resultado solo contiene " ¿cómo puedo hacer referencia al elemento" libro "? –

+1

$ (xml) .find (" libro ") le da una lista de los nodos del libro. En el ciclo "cada", $ (esto) es una referencia al nodo del libro. – wildpeaks

+0

sí, pero para mi código no quiero el hallazgo porque es innecesario, solo tengo un elemento del libro, ¿es posible? para hacer referencia directamente sin encontrar? –

3

devolver los datos con el tipo de contenido (por ejemplo application/xml) y XHR se analizarlo para usted.

Consulte también: el argumento de tipo de datos para jQuery de ajax method.

Cuestiones relacionadas