本文實(shí)例講述了nodejs模塊xml2js解析xml過(guò)程中遇到的坑。分享給大家供大家參考,具體如下:
在一個(gè)項(xiàng)目中,用到nodejs模塊xml2js解析xml,xml的數(shù)據(jù)如下:
<xml><MsgId>6197906553041859764</MsgId></xml>
用xml2js中的xml2js.parseString 方法解析,本來(lái)以為是一個(gè)json,但總是解析失敗,把解析的結(jié)果log下后如下:
{ xml: { MsgId: [ '6197906553041859764' ] } }本來(lái)xml中<MsgId>包的是一個(gè)字符串,結(jié)果解析出來(lái)的是數(shù)組。
后來(lái)查了xml2js的官網(wǎng),發(fā)現(xiàn)了如下的參數(shù):
explicitArray (default: true): Always put child nodes in an array if true; otherwise an array is created only if there is more than one.
原來(lái)xml2js默認(rèn)會(huì)把子子節(jié)點(diǎn)的值變?yōu)橐粋€(gè)數(shù)組,這個(gè)坑真大啊!!!為了查這個(gè)問(wèn)題,花了半天的時(shí)間。
知道原因后,解決的方法也很簡(jiǎn)單,在調(diào)用xml2js.parseString時(shí)加入explicitArray的參數(shù)如下:
xml2js.parseString(buf, {explicitArray : false}, function(err, json) {});修改后解析如下的結(jié)果如下:
{ xml: { MsgId: '6197906553041859764' } }現(xiàn)在就變成一個(gè)字符串了。
希望本文所述對(duì)大家nodejs程序設(shè)計(jì)有所幫助。
新聞熱點(diǎn)
疑難解答