2016-08-20 59 views
-1

找到所有XML節點具有類似的NodeJS我如何通過元素

<root> 
    <a> 
    <b>test1</b> 
    <c> 
     <b>test2</b> 
     <b>test3</b> 
    </c> 
    </a> 
    <b>test4</b> 
</root> 

的XML我想檢索包含<b>元素的所有值的數組:

expectedOutput = ["test1", "test2", "test3", "test4"] 

會是什麼最好的NodeJS庫以及如何使用它?謝謝!

回答

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>