从XMLHttpRequest解析XML
问题描述:
我正在使用QML和XMLHttpRequest来获取一些XML数据。从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
,但它全部10次返回null(有10个孩子)。怎么了?
答
DOM中元素节点的文本由子元素(文本节点)表示。文本节点的值是你想要的。
因此改变
child.childNodes[j].nodeValue
到
child.childNodes[j].childNodes[0].nodeValue
,使其工作。
见http://www.w3schools.com/dom/dom_nodes_get.asp
也许还可以考虑使用XmlListModel。
这是哪一种语言? – 2011-03-23 23:37:48