【问题标题】:How do I get the value of the <opensearch:totalResults> from an xml doc tag in Javascript?如何从 Javascript 中的 xml doc 标签获取 <opensearch:totalResults> 的值?
【发布时间】:2019-07-04 19:26:27
【问题描述】:

我成功地在 javascript 中解析了一个 xml 文档,并通过 XMLHttpRequest 读入了它 我现在想获取一条额外的信息。我正在阅读的提要包含此标签 &lt;opensearch:totalResults&gt;118&lt;/opensearch:totalResults&gt; 如何读取它包含的值?

我使用 Firefox 的控制台检查了 xml 文档的内容,但徒劳地寻找它提到的地方。 在线搜索也无济于事。

虽然不是很相关,但我的代码的核心是:

    var process = function (xml) {
    var i, xmlDoc, table;
    xmlDoc = xml.responseXML;
    globXmlDoc = xmlDoc;
    var myItemAsAnObject = [];
    if (xmlDoc === null){
    feedLength = 0;
    } else {
    feedLength = xmlDoc.getElementsByTagName("item").length;
    if (feedLength == 0) { return false; }
    var x = xmlDoc.getElementsByTagName("item");

XML 是

<rss version="2.0">
<channel>
<title>victoriana: Zazzle.com Store: Matching "victoriana"</title>
<link>http://feed.zazzle.com/z.2/api/find.aspx?qs=victoriana&ft=rss&ou=%2Frss%3Fqs%3Dvictoriana</link>
<description/>
<language>en-us</language>
<pubDate>Thu, 04 Jul 2019 17:26:55 GMT</pubDate>
<ttl>60</ttl>
<opensearch:totalResults>118</opensearch:totalResults>
<opensearch:startIndex>1</opensearch:startIndex>
<opensearch:itemsPerPage>60</opensearch:itemsPerPage>
<opensearch:Query role="request" searchTerms="victoriana"/>
<item>
:
:
:

整个 xml 文档的链接是: rss feed

请注意,globxmlDoc 是一个全局变量,只是为了让我在控制台中查看它。

我真的不知道从哪里开始......

【问题讨论】:

  • 请分享xml
  • 糟糕,我是想包含它。现在完成。谢谢你的推动,balderman :)
  • 你能上传一个有效的xml文档吗?
  • 嗯...添加问题的引导方式表示不要添加整个文档。我将添加一个链接。

标签: javascript xml xmlhttprequest opensearch


【解决方案1】:

打开这个 HTML 文档,你会得到 118 (Tested using Chrome)

<!DOCTYPE html>
<html>
<body>

<p id="demo"></p>

<script>
var parser, xmlDoc;
var text = "<bookstore><book>" +
"<title>Everyday 111</title>" +
"<author>Giada De Laurentiis</author>" +
"<opensearch:totalResults>118</opensearch:totalResults>" + 
"<year>2005</year>" +
"</book></bookstore>";

parser = new DOMParser();
xmlDoc = parser.parseFromString(text,"text/xml");

document.getElementById("demo").innerHTML =
xmlDoc.getElementsByTagName("opensearch:totalResults")[0].childNodes[0].nodeValue;
</script>

</body>
</html>

【讨论】:

  • 我已经有了 xmlDoc,并且已经可以很好地解析它了。我将如何使用你的方法来处理我已经拥有的东西?在开始时查看我的代码的核心。感谢您对此的帮助,balderman :)
  • 我确实尝试添加feedTotalProdsAvail = xmlDoc.getElementsByTagName("opensearch:totalResults")[0].childNodes[0].nodeValue; 作为 else 子句中的第一条语句,但它给了我错误 TypeError: xmlDoc.getElementsByTagName(...)[0] is undefined
  • 我使用了您提供的代码,balderman,您是对的,它在 Chrome 中确实有效。但为什么不在 Firefox 中呢?显然,我正在寻找一种适用于所有主要浏览器的方法。它也适用于 Safari 和 Vivaldo 浏览器。
  • 哦,我现在看到 Firefox 抱怨 &lt;opensearch:totalResults&gt;118&lt;/opensearch:totalResults&gt; 标记未绑定到命名空间。
  • 我已经勾选了你的答案,秃头。实际上,这是最好的答案。错误在于我试图解析的 rss 提要中缺少命名空间定义。所以谢谢你让我发现:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-26
  • 2016-03-13
  • 2013-04-28
相关资源
最近更新 更多