2017-04-12 96 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')); 

你必須第一個參數傳遞的命名空間名稱,而不是前綴。