使用纯javascript读取自闭标签的属性?

时间:2015-01-14 22:25:12

标签: javascript xml

如何使用纯javascript读取XML文档中自关闭标记的属性? 例如。获得" url"的价值在下面的xml元素中?

<channel>     
  <item> 
    <title>News Title Goes Here<title>
    <media:thumbnail width="144" height="81" url="http://news.bbcimg.co.uk/media/images/80270000/jpg/_80270552_mjadzelics_cleared_07.jpg"/> 
  </item>  
<channel>

javascript调用 getElementsByTagName 适用于标题节点,但不适用于自闭媒体:缩略图节点

2 个答案:

答案 0 :(得分:0)

我正在用这个作为一个字符串... idk你正在采取什么方法,但这应该有所帮助。

你没有关闭你的标题标签,是一回事。

xml修复:

<title>News Title Goes Here</title>

JS

var xml = (new DOMParser()).parseFromString(xml, "text/xml").querySelectorAll('[url]'),
    mediaEls = ([].slice.call(xml)).filter(function(a) { return a.tagName == 'media:thumbnail'}),
    urls = mediaEls.map(function(a, i) { return a.getAttribute('url') });
console.log(urls); 
// ["http://news.bbcimg.co.uk/media/images/80270000/jpg/_80270552_mjadzelics_cleared_07.jpg"]

答案 1 :(得分:0)

我设法使用不同的方法访问该属性。我使用的javascript xml调用是getElementsByTagNameNS,但对于较旧的IE浏览器,我回到了getElementsByTagName调用。

请参阅下面的实施代码。

function getElementsByTagNameNS(xml, namespace, prefix, tag)
{
    return xml.getElementsByTagNameNS ? xml.getElementsByTagNameNS(namespace, tag) : xml.getElementsByTagName(prefix + ':' + tag);
}

要使用它:

var x = xmlDoc.getElementsByTagName("item");
var imgUrl = x.getElementsByTagNameNS("*", "thumbnail").getAttribute("url");