如果XML文件在不同级别包含多个具有相同名称的节点,那么如何指定要获取的确切节点?

时间:2012-10-03 17:50:45

标签: javascript jquery xml

我在使用javascript / jquery读取XML文件的节点时遇到了问题。

Say我们有一个像这样的xml文件

<root>
  <people>
    <name>Jack</name>
    <age>18</age>
  </people>
  <name>Rose</name>
</root>

对于这个xml文件,在第一级,有一个名称,内容为“Rose”,在第二级,还有一个名称,内容为“Jack”

我尝试使用jquery的函数来读取文件:

var NAME;
$.get('myxml.xml', 'xml', function(d){
    NAME = $(d).find('name').text();
});

但是这样,每次NAME都会包含两个节点内容的组合,比如'JackRose'

如果我只是想获取第二个节点的内容,那么'Rose'要读取和存储,我该怎么办?

谢谢!

3 个答案:

答案 0 :(得分:3)

您可以使用each方法:

$.get('myxml.xml', 'xml', function(d){
    $(d).find('name').each(function(){
        var txt = $(this).text()
    });
});

eq方法:

$.get('myxml.xml', 'xml', function(d){
    var $name = $(d).find('name');
    var first = $name.eq(0).text()        
    var second = $name.eq(1).text()
});

答案 1 :(得分:2)

尝试

var NAME;
$.get('myxml.xml', 'xml', function(d){
    NAME = $(d).find('root > name').text();
});

答案 2 :(得分:2)

由于第二个是root元素的直接子元素,因此可以像这样找到它:

var NAME;
$.get('myxml.xml', 'xml', function(d){
    NAME = $(d).find('> name').text();
});

根据xml,如果根元素不是root元素,并且通常有一个<xml>元素作为根元素,则选择器将为('root > name')