2010-02-08 45 views
2

我需要迭代XML项目。javascript jquery迭代简单XML

示例XML:

<items> 
    <name>234</name> 
    <email></email> 
    <phone></phone> 
    <phone2></phone2> 
    <phone7>33</phone7> 
</items> 

我尝试了很多的组合,但没有成功。例如:

var xml=' <items><name>234</name> <email></email><phone></phone></items>' 

$(xml).find('items\').each(function() { 
    alert($(this).text() + ':' + $(this).value()); 
}); 
+0

Dup的:http://stackoverflow.com/问题/ 1735026/jquery-iterate-through-all-xml-tags – Li0liQ 2010-02-08 22:52:52

回答

3

麻烦的是,在你的榜样,<items>...</items>是根节点 - 它xml变量。所以,如果你想它的孩子,你可以这样做:

var xml='<items><name>234</name> <email></email><phone></phone></items>'; 
$(xml).children.each(function() { 
    alert(this.nodeName + ':' + $(this).text()); 
}); 

如果你想在<items>节点本身,你可以简单地做:

var xml='<items><name>234</name> <email></email><phone></phone></items>'; 
$(xml).each(function() { 
    alert(this.nodeName + ':' + $(this).text()); 
}); 
+0

非常感谢 ps 小字谜应该是children()而不是children – wicherqm 2010-02-08 23:14:26

0
var xml=' <items><name>234</name> <email></email><phone></phone></items>'; 

$(xml).find('items').each(function() { 
alert(this.nodeName + ':' + $(this).text()); 
}); 
+0

find('items')将不起作用,因为items是根节点。 – wsanville 2010-02-08 22:59:37

+0

'find('items')'does not,but'filter('items')'does,if case – munch 2010-02-08 23:27:20

0

它应该是:

$(xml).find('items').each(function(){ 
    var name = $(this).find('name').text(); 
    alert(name); 
});