【问题标题】:Javascript XML parser doesn't workJavascript XML 解析器不起作用
【发布时间】:2012-04-29 18:59:37
【问题描述】:

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

解析本身:

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 变量的末尾,解析也无法正常工作。您能否也指出一些有关此行为的有用教程?

【问题讨论】:

  • 可能是因为它不是有效的 XML 结构...?

标签: javascript xml parsing dom


【解决方案1】:

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

<article><name>Some article</name><other>Something else</other></article>

【讨论】:

    【解决方案2】:

    尝试使用

    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 ....
    

    【讨论】:

      猜你喜欢
      • 2014-02-02
      • 2012-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-07
      • 1970-01-01
      相关资源
      最近更新 更多