NodeJS如何按元素查找所有XML节点

时间:2016-08-20 18:32:09

标签: xml node.js

我有类似于

的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库以及如何使用它?谢谢!

1 个答案:

答案 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>

类型的所有元素的值