我需要一些帮助。 我需要所有节点中的名字,这些节点在js中的xml中有文本。
示例:
<xml>
<first>
<name1>text</name1>
</first>
<second>
<name2>text</name2>
<name3>text</name3>
</second>
</xml>
现在我需要结果:
name1
name2
name3
THX
答案 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());
}
}