0

我知道互联网上有很多问题和文章讨论这个问题,但我不知何故无法让它发挥作用。我很确定我错过了一些基本的东西,但我找不到它。

解析本身:

var str="<article>Some article</article><other>Other stuff</other>";
var xmlDoc = null;
if (window.DOMParser) {
            var parser = new DOMParser();
            xmlDoc = parser.parseFromString(str,"text/xml");
        } 
else if (window.ActiveXObject) {
            xmlDoc = new ActiveXObject ("Microsoft.XMLDOM");
            xmlDoc.async = false;
            xmlDoc.loadXML(str);
        }


var node = xmlDoc.getElementsByTagName("article")[0].childNodes[0].nodeValue;
alert (node);

但它不起作用,FF 说:

xmlDoc.getElementsByTagName("article")[0] is undefined

此外,如果我像这样使用 str ,它也可以工作:

var str="<article>Some article</article>";

所以问题是,为什么它不起作用?即使我只将一个字符附加到 str 变量的末尾,解析也无法正常工作。您能否还指出一些有关此行为的有用教程?

4

2 回答 2

4

您的字符串不是有效的 XML,因为它有多个根节点。你的意思是这样的:

<article><name>Some article</name><other>Something else</other></article>
于 2012-04-29T19:04:14.480 回答
1

尝试使用

var str="<root><article>Some article</article><other>Other stuff</other></root>";


var node = xmlDoc.documentElement.getElementsByTagName("article")[0].childNodes[0].nodeValue;

documentElement property returns the root tag of an xml document , once you get the root tag, next you can extract elements by tag name , child nodes ....
于 2012-04-29T19:04:22.220 回答