Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

jQuery XML parsing how to get element attribute

Tags:

jquery

xml

XML:

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

I am fetching css from ajax and in onsuccess function my code is as follow:

$(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');

});

What I want to get content url attribute I am getting item children (title, description, content, commentRss and comments) but when I try to get $(this).find('content') It is not giving me anything Can anyone figure it out what am I doing wrong? Thanks

like image 967
shankhan Avatar asked Jan 28 '11 07:01

shankhan


2 Answers

Your XML uses a namespace.

See this similar Stack Overflow question regarding namespaces. You have to escape the colon:

jQuery XML parsing with namespaces

like image 69
jmort253 Avatar answered Nov 15 '22 06:11

jmort253


Got a correction for you.. and your Namespace SOLUTION! You need to escape the namespace ":" properly with \. I have show the example below which works with the Itunes podcast XML feeds.

 item.description = jQuery(this).find("[nodeName=itunes\\:summary]").eq(0).text();
like image 21
John Drefahl Avatar answered Nov 15 '22 06:11

John Drefahl