在Javascript中获取XML中所有节点的名称

时间:2014-12-06 10:57:41

标签: javascript jquery xml

我需要一些帮助。 我需要所有节点中的名字,这些节点在js中的xml中有文本。

示例:

<xml>
  <first>
    <name1>text</name1>
  </first>
  <second>
    <name2>text</name2>
    <name3>text</name3>
  </second>
</xml>

现在我需要结果:

name1
name2
name3

THX

2 个答案:

答案 0 :(得分:0)

您可以使用$.parseXML();

var xmlStr = "<xml><first><name1>text</name1></first><second><name2>text</name2><name3>text</name3></second></xml>";
var xml = $($.parseXML(xmlStr)); // parse the string to make xml and covert to jQuery obj
xml.find("*").filter(function(){ 
    return this.nodeName.indexOf("name") == 0; // filter only elements starting with name
}).each(function(){
    console.log(this.nodeName); // log the name
});

xmlStr可以是直接字符串,也可以是ajax调用。

答案 1 :(得分:0)

忽略之前的答案,因为我没有意识到你想要任何文字,而不只是“文字”。对于任何具有任何文本且完全符合您需求的节点,使用document.createTreeWalker()似乎是一个纯粹的javascript有效解决方案。

var treeWalker=document.createTreeWalker(document.body, NodeFilter.SHOW_TEXT, null, false);
treeWalker.firstChild(); 
while (treeWalker.nextSibling())
    { 
       text=treeWalker.currentNode;
       if (text.nodeValue!=false)
       {
            alert(text.parentNode.tagName.toLowerCase()); 
       }
}