使用Node JS更改XML数据的值

时间:2017-07-04 18:16:09

标签: javascript 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更改为来自不同变量的不同字符串。

所以它看起来像这样:

 <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>

这可以直接在Node JS中进行,而无需将此XML更改为json,修改它然后转换回XML吗?我试过这个但它似乎不起作用,在XML转换上创建了奇怪的数组和'$'。

关于我如何做到这一点的任何建议?

2 个答案:

答案 0 :(得分:2)

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

这是jQuery的nodejs实现,因此DOM操作很容易。在文件的顶部,您必须在需要后设置xmlMode:true。

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

然后你可以使用像

这样的东西
$('information').text('example');

答案 1 :(得分:0)

1)您可以像普通字符串一样解析xml文档,查找带有正则表达式的信息标记并进行更改。

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

2)您可以使用某些模块(如xmldoc)来解析文档。 https://github.com/nfarina/xmldoc

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