【问题标题】:Parse XML from XMLHttpRequest从 XMLHttpRequest 解析 XML
【发布时间】:2011-07-21 14:44:27
【问题描述】:

我正在使用 QML 和 XMLHttpRequest 来获取一些 XML 数据。

  var doc = new XMLHttpRequest();
  if (doc.readyState == XMLHttpRequest.DONE) {
        var root = doc.responseXML.documentElement;

        // Go through recenttracks children
        var recentTracks = root.childNodes[1];
        for (var i=0; i < recentTracks.childNodes.length; ++i)
        {
            var child = recentTracks.childNodes[i];
            for (var j=0; j < child.childNodes.length; ++j)
            {
                if (child.childNodes[j].nodeName == "name")
                {
                    console.log(child.childNodes[j].nodeValue); // [!]
                }
            }
        }
    }

我在解析,比如XML

<track>
<artist mbid="293f35f8-3682-44bd-9471-13ca94fa9560">Tyler James</artist>
<name>Tried To Measure</name>
<streamable>0</streamable>
<album mbid="">It Took The Fire</album>
<url>http://www.last.fm/music/Tyler+James/_/Tried+To+Measure</url>
<image size="small">http://userserve-ak.last.fm/serve/34s/59408859.jpg</image>
</track>

现在查看代码[!] 中的注释。在该行之前,我正在检查当前节点名称是否为“名称”(查看 XML)。现在我想获得name 的价值。我写了:child.childNodes[j].nodeValue,但它返回 null 10 次(有 10 个孩子)。怎么了?

【问题讨论】:

    标签: xml parsing xmlhttprequest qml


    【解决方案1】:

    DOM 中元素节点的文本由子元素(文本节点)表示。文本节点的值就是你想要的。

    所以改变

    child.childNodes[j].nodeValue
    

    进入

    child.childNodes[j].childNodes[0].nodeValue
    

    让它工作。

    http://www.w3schools.com/dom/dom_nodes_get.asp

    也许还可以考虑使用 XmlListModel。

    【讨论】:

      猜你喜欢
      • 2021-04-08
      • 1970-01-01
      • 2011-01-13
      • 2012-02-12
      • 1970-01-01
      • 2016-06-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多