2017-04-12 123 views
1

我的xml看起来像这样,我能够检索项目并从像<title><description>这样的节点获取数据。如何从<media:title><media:credit>获取值,<media:thumbnail>阅读xml使用jquery或javascript

这是怎么了能够得到的数据

 var xmlparser = new DOMParser(); 
     var xmlData = xmlparser.parseFromString(data.text(), "text/xml"); 
     var items = xmlData.getElementsByTagName('item'); 
     for(var i = 0; i < items.length; i++){ 
      var title = items[i].getElementsByTagName("title")[0].childNodes[0].nodeValue; 
      var desc = items[i].getElementsByTagName("description")[0].childNodes[0].nodeValue; 
     } 
<pre xmlns:content="http://purl.org/rss/1.0/modules/content/" 
        xmlns:dcterms="http://purl.org/dc/terms/" 
        xmlns:media="http://search.yahoo.com/mrss/" version="2.0"> 
<Channel> 
    <item> 
    <title>List of records</title> 
    <description>reading xml</description. 
    <media:title xmlns:media="http://search.yahoo.com/mrss/"> 
    SinkorSwim Trailer 
    </media:title> 
    <title>Sink or Swim - Trailer</title> 
    <description>Jon Bowermaster's documentary</description>   
    <media:description xmlns:media="http://search.yahoo.com/mrss/"> 
    Jon Bowermaster's documentary on a learn-to-swim camp 
    </media:description> 
    <media:credit xmlns:media="http://search.yahoo.com/mrss/" role="Director" 
          scheme="urn:ebu"> 
    Jon Bowermaster 
    </media:credit> 
    <media:status xmlns:media="http://search.yahoo.com/mrss/" state="active"/> 
    <media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" 
    type="landscape" url="http://snagfilms-video.jpg"/> 
    <media:player xmlns:media="http://search.yahoo.com/mrss/" height="323" 
    url="http://embed.snagfilms.com/embed/player?filmId=00000158-b20c-d8f9- 
    affd-b32ce8700000" width="500"/> 
    </item> 
    <item></item> 
    <item></item> 
</channel> 
</pre> 

回答

0

mediamedia:title表示XML命名空间前缀。命名空间前缀只是命名空间的快捷方式。命名空间必须在文档的某个地方用xmlns:media属性定义。 然后你可以使用的名称空间感知getElementsByTagNameNS()功能来查询的title元素:

console.log(xml.getElementsByTagNameNS('xmlns:media="http://search.yahoo.com/mrss/"', 'title')); 

你必须第一个参数传递的命名空间名称,而不是前缀。