使用jQuery从xml获取Table列名

时间:2015-08-24 13:37:03

标签: jquery xml

我已通过以下格式从网络服务获得xml

<NewDataSet>
  <Table>
    <TelecallerName>AutoTelecaller_new</TelecallerName>
    <BASE>Aug 2015</BASE>
    <Location_x0020_Calling>0</Location_x0020_Calling>
    <NE>0</NE>
    <Sales_x0020_Open>0</Sales_x0020_Open>
    <TeleCaller_x0020_Follow_x0020_Up>1</TeleCaller_x0020_Follow_x0020_Up>
  </Table>
  <Table>
    <TelecallerName>jiteshkumar</TelecallerName>
    <BASE>Aug 2015</BASE>
    <Location_x0020_Calling>1</Location_x0020_Calling>
    <NE>1</NE>
    <Sales_x0020_Open>1</Sales_x0020_Open>
    <TeleCaller_x0020_Follow_x0020_Up>29</TeleCaller_x0020_Follow_x0020_Up>
  </Table>
</NewDataSet> 

在这里,我希望获得TelecallerNameBase等列名。简而言之,我想找到第一个Table节点的子节点。我怎么能得到它?

我尝试过(由charlietfl建议)

var x = $.parseXML(xml);
$(x).find('Table').each( function() {
console.log($(this).text());
});

但是控制台提供了

AutoTelecaller_new Aug 2015 0 0 0 1 (index):28 jiteshkumar Aug 2015 1 1 1 29

Fiddle

2 个答案:

答案 0 :(得分:1)

children()是一个函数,但是如果你在console.log($(selector).children)没有使用()调用子函数的情况下执行,你看到的是实际的函数本身,而不是函数返回的内容

变化:

console.log( $(x).find('Table').children );

要:

console.log( $(x).find('Table').children() );

以下内容在第一个<Table>

中创建了一个标记名称数组
var x = $.parseXML(xml);
var $firstTable= $(x).find('Table').eq(1);
var colNames =$firstTable.children().map(function(){
    return this.tagName;        
}).get();

console.log (colNames);

答案 1 :(得分:1)

var xml ='YOUR XML HERE';
var mynodes =[];
mynodes = $(xml).children()

http://jsfiddle.net/u98077xL/3/

mynodes现在是每个节点及其值的JSON数组。你可以迭代这个(例如使用each)并获得你想要的任何节点。