使用Node JS更改XML数据的值

我有一个如下所示的XML文档:

<Data id="1401" href="http://222222222"> <definition id="12218" href="http://11"></definition> <Data-List count="1"> <DataStep type="3"> <completed_time>07/04/2017 17:18:11</completed_time> <status>3</status> </DataStep> </Data-List> <information>abcdefg</information> </Data> 

我想将information数据abcdefg更改为来自不同variables的另一个string。

所以看起来像这样:

  <Data id="1401" href="http://222222222"> <definition id="12218" href="http://11"></definition> <Data-List count="1"> <DataStep type="3"> <completed_time>07/04/2017 17:18:11</completed_time> <status>3</status> </DataStep> </Data-List> <information>example</information> </Data> 

这是可能的,直接在节点的JS没有改变这个XML到一个JSON,修改它,然后转换回XML? 我已经尝试过,但它似乎没有工作,创build奇怪的数组和$的XML转换。

任何build议,我怎么能做到这一点?

我会使用cherriojs https://github.com/cheeriojs/cheerio

这是jQuery的nodejs实现,所以DOM操作很容易。 在你的文件的顶部,你必须在需要的时候设置xm​​lMode:true。

 var $ = cheerio.load(your-xml-doc, { xmlMode: true }); 

那么你可以使用类似的东西

 $('information').text('example'); 

1)你可以像正常的string一样分析你的xml文档,用正则expression式查找信息标签,并改变它。

 xml = xml.replace(/<information>[a-z0-9_-]*<\/information\>/, '<information>example</information>'); 

2)你可以使用一些模块,比如xmldoc来parsing文档。 https://github.com/nfarina/xmldoc

 let xmldoc = require('xmldoc'); let document = new xmldoc.XmlDocument(data.toString()); document.descendantWithPath('information').val = "example";