【问题标题】:Read attribute of a self closing tag using pure javascript?使用纯javascript读取自闭标签的属性?
【发布时间】:2015-01-14 22:25:12
【问题描述】:

如何使用纯 javascript 读取 XML 文档中的自结束标记的属性? 例如。在下面的 xml 元素中获取“url”的值?

<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 适用于标题节点,但不适用于自关闭媒体:缩略图节点

【问题讨论】:

  • 是被解析为 RSS,还是像 HTML 一样访问?
  • 请注意,标记名是media:thumbnail 而不是media
  • 您需要担心的不是 JavaScript,而是您正在使用的文档解析引擎。您是在浏览器中执行此操作吗?问题在于 media 命名空间,在这种情况下,您需要一个命名空间感知引擎。
  • 我试图使用以下调用将文档解析为 xml 文档:var xmlhttp = new XMLHttpRequest(); xmlhttp.open("GET",'feeds.feedburner.com/engadget/Dnjv',false); xmlhttp.send(); xmlDoc = xmlhttp.responseXML;
  • 我认为 feedburner 支持 CORS,但运行您发布的链接不包括 CORS 标头,并且被同源策略停止。一种解决方法可能是使用 Google Feed API,它实际上可以返回 JSON,这使事情变得更简单,但如果您正在获取内容,这可能不是问题?

标签: javascript xml


【解决方案1】:

我把它当作一个字符串来处理...... 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"]

【讨论】:

  • 我得到 't' 是未定义的。你能告诉我应该用什么来代替它吗?
  • 哈哈。是的,在那里留下了我的测试变量名称:t。检查编辑...它应该是xml
【解决方案2】:

我设法使用不同的方法访问了该属性。我使用的 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");

【讨论】:

猜你喜欢
  • 2016-04-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多