2014-12-06 84 views
1

我需要一點幫助。 我需要所有節點中的文本在js中的xml中的名稱。使用JavaScript獲取XML中所有節點的名稱

例如:

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

現在我需要的結果是:

name1 
name2 
name3 

THX

+0

你卡在哪裏? – 2014-12-06 11:03:38

回答

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()); 
     } 
} 
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調用。

+0

嘿thx。說我的錯。 標籤可以有我不知道的每個名稱。 文本 文本 文本 2014-12-06 11:12:21