2009-08-05 67 views
1

我目前正在制作一个窗口小部件,用于从Feed中显示项目。我大部分都是这样工作的,但由于某些原因,项目内的标签内的数据会返回为空,但我得到的数据和标签没有问题。使用javascript无法获取描述rss标记数据

feed是和x mlhttp.responseXML对象。

var items = feed.getElementsByTagName("item"); 

for (var i=0; i<10; i++){ 
    container = document.getElementById('list'); 
    new_element = document.createElement('li'); 
    title = items[i].getElementsByTagName("title")[0].firstChild.nodeValue; 
    link = items[i].getElementsByTagName("link")[0].firstChild.nodeValue; 
    alert(items[i].getElementsByTagName("description")[0].firstChild.nodeValue); 
    new_element.innerHTML = "<a href=\""+link+"\">"+title+"</a> "; 
    container.insertBefore(new_element, container.firstChild); 
} 

我不知道为什么它不会为标签工作,而是为其他标签。

这里是RSS的一个例子养活其试图解析:

<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/"> 
    <channel> 
    <title>A title</title> 
    <link>http://linksomehwere</link> 
    <description>The title of the feed</description> 
    <language>en-us</language> 
    <item> 
     <pubDate>Fri, 10 Jul 2009 11:34:49 -0500</pubDate> 
     <title>Awesome Title</title> 
     <link>http://link/to/thing</link> 
     <guid>http://link/to/thing</guid> 
     <description> 
     <![CDATA[ 
     <p>some html crap</p> 
     blah blah balh 
     ]]> </description> 
    </item> 
</channel> 
</rss> 

回答

0

我不知道JavaScript,但许多XML解析器创建CDATA自己的节点,所以你可能需要得到孩子的CDATA节点,这意味着你的代码不够深,无法获取CDATA节点内的数据。