2011-01-28 13 views
5

XML:jQuery análisis XML cómo conseguir atributo del elemento

<item> 
    <title>Some title</title> 

    <description> 
    <![CDATA[ 
     Some description text Some description text Some description text Some description text Some description text Some description text 
     Some description text Some description text Some description text Some description text Some description text Some description text 
     Some description text Some description text Some description text Some description text Some description text Some description text 
     Some description text Some description text Some description text Some description text Some description text Some description text 
    ]]> 
    </description> 

    <media:content isDefault="true" medium="image" url="http://sampledomain.com/image.jpg"> 
     <media:title>Image title</media:title> 
     <media:description>Image description</media:description> 
     <media:thumbnail url="http://sampledomain.com/image.jpg" width="160" height="120" /> 
    </media:content> 

    <wfw:commentRss>http://sampledomain.com/comment/feed/</wfw:commentRss> 
    <slash:comments>0</slash:comments> 
    </item> 

me retracto css del Ajax y en función de onSuccess mi código es el siguiente:

$(xml).find('item').each(function() { 
var title = $(this).find('title').eq(0).text(); 
var url = $(this).find('content').attr('url'); 

// Printing url as undefined 
alert(url); 
console.log($(this).find('content'); 

}); 

Lo que quiero obtener la URL de contenido atributo Estoy obteniendo elementos hijos (título, descripción, contenido, comentarioRss y comentarios) pero cuando trato de obtener $ (esto) .find ('contenido') No me está dando nada ¿Alguien puede resolverlo? ¿Qué soy? haciendo mal? Gracias

+1

var url = $ (this) .find ('contenido') attr ('url') val()..; o intenta usar .text() espero que ayude – Rafay

Respuesta

4

Su XML utiliza un espacio de nombres.

Consulte esta pregunta similar sobre desbordamiento de pila con respecto a los espacios de nombres. Tienes que escapar del colon:

jQuery XML parsing with namespaces

+0

gracias por el enlace esto funciona para mí $ (this) .find ('media \\: contenido'). attr ('url'); – shankhan

+0

@shankhan - De nada. Esto definitivamente es bueno saberlo. No me ocupo de los espacios de nombres a menudo, pero estoy planeando un proyecto que los involucrará. – jmort253

1

Tienes una corrección para usted .. y su solución de espacio de nombres! Necesita escaparse correctamente del espacio de nombres ":" con \. He mostrado el ejemplo a continuación que funciona con los feeds XML del podcast Itunes.

item.description = jQuery(this).find("[nodeName=itunes\\:summary]").eq(0).text(); 
Cuestiones relacionadas