我有类似于
的XML<root>
<a>
<b>test1</b>
<c>
<b>test2</b>
<b>test3</b>
</c>
</a>
<b>test4</b>
</root>
我想检索一个包含<b>
元素的所有值的数组:
expectedOutput = ["test1", "test2", "test3", "test4"]
什么是最好的NodeJS库以及如何使用它?谢谢!
答案 0 :(得分:0)
到目前为止,我想出了以下代码,如果有人知道更好的方法,请告诉我:
var DOMParser = new (require('xmldom')).DOMParser;
var xml = getXML();
var document = DOMParser.parseFromString(xml);
var spans = findElements('span', document.documentElement);
for (var i = 0; i < spans.length; i++) {
console.dir(spans[i]);
}
function findElements(element, xml) {
var output = [];
var nodes = xml.childNodes;
if (nodes != null) {
for (var i = 0; i < nodes.length; i++) {
if (nodes[i].nodeName == element && nodes[i].childNodes.length == 1) {
output.push(nodes[i].childNodes[0].nodeValue);
} else {
output = output.concat(findElements(element, nodes[i]));
}
}
}
return output;
}
这允许我检索<span>