2016-04-14 52 views
0

如何解析'value'标记内部从XML下到nodejs中数组的任何内容?我尝试了npm xpath/xmldom,XMLExtract然后xml2json,但没有成功。XML到nodejs中的数组

<response status="success"><result> 
    <resource-monitor> 
    <data-processors> 
     <dp0> 
     <second> 
      <cpu-load-average> 
      <entry> 
       <coreid>0</coreid> 
       <value>0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 
,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</value> 
      </entry> 
      <entry> 
       <coreid>1</coreid> 
       <value>2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 
,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2</value> 
      </entry> 

回答

1

一种选择是使用cheerio这样的:

var cheerio = require('cheerio'); 
var _ = require('lodash'); 

var $ = cheerio.load('<cpu-load-average>\ 
     <entry>\ 
      <coreid>0</coreid>\ 
      <value>0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</value>\ 
     </entry>\ 
     <entry>\ 
      <coreid>1</coreid>\ 
      <value>2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2</value>\ 
     </entry>\ 
    </cpu-load-average>', 
    { xmlMode: true } 
); 

var values = _.map($('cpu-load-average').find('value'), function(item) { 
    return $(item).text().split(','); 
}); 

console.log(values); 

试试它requirebin。如果它是一个大的XML文件,cheerio应该比xml2js快。