溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

實(shí)例分析nodejs模塊xml2js解析xml過程中遇到的坑

發(fā)布時(shí)間:2020-09-29 04:15:03 來源:腳本之家 閱讀:513 作者:newjueqi 欄目:web開發(fā)

本文實(shí)例講述了nodejs模塊xml2js解析xml過程中遇到的坑。分享給大家供大家參考,具體如下:

在一個(gè)項(xiàng)目中,用到nodejs模塊xml2js解析xml,xml的數(shù)據(jù)如下:

<xml>
<MsgId>6197906553041859764</MsgId>
</xml>

用xml2js中的xml2js.parseString 方法解析,本來以為是一個(gè)json,但總是解析失敗,把解析的結(jié)果log下后如下:

{ xml: { MsgId: [ '6197906553041859764' ] } }

本來xml中<MsgId>包的是一個(gè)字符串,結(jié)果解析出來的是數(shù)組。

后來查了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.

原來xml2js默認(rèn)會(huì)把子子節(jié)點(diǎn)的值變?yōu)橐粋€(gè)數(shù)組,這個(gè)坑真大啊?。。榱瞬檫@個(gè)問題,花了半天的時(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è)字符串了。

PS:這里再為大家提供幾款關(guān)于xml操作的在線工具供大家參考使用:

在線XML/JSON互相轉(zhuǎn)換工具:
http://tools.jb51.net/code/xmljson

在線格式化XML/在線壓縮XML
http://tools.jb51.net/code/xmlformat

XML在線壓縮/格式化工具:
http://tools.jb51.net/code/xml_format_compress

XML代碼在線格式化美化工具:
http://tools.jb51.net/code/xmlcodeformat

希望本文所述對(duì)大家nodejs程序設(shè)計(jì)有所幫助。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI