Node + xmldom:如何更改 javascript 中单个 XML 字段的值?

Node + xmldom: How do I change the value of a single XML field in javascript?

使用 node v.0.10.29, Express v4.12.0, and xmldom v0.1.19,我正在尝试执行以下操作:

步骤

  1. XML文件读入字符串
  2. 使用xmldom
  3. 将字符串转换为XML对象
  4. <name>default</name> 字段设置为 <name>test</name>
  5. 将 XML 对象转换回字符串

问题

问题是我设置<name>字段后,它在对象中设置正确,但是当我将它转换为字符串时,<name>字段又回来了成为旧值(错误)。

代码

代码如下所示:

var fs = require('fs');
var DOMParser = require('xmldom').DOMParser;
var XMLSerializer = require('xmldom').XMLSerializer;
var filename = "myFile.xml";

fs.readFile(filename, "utf-8", function (err,data) 
{
    //CREATE/PARSE XML OBJECT FROM STRING
    var customerConfig = new DOMParser().parseFromString(data);

    //SET VALUE TO "TEST" (<name>default</name> TO <name>test</name>)
    customerConfig.getElementsByTagName("name")[0].childNodes[0].nodeValue = "test";

    //THIS OUTPUTS "test" WHICH IS CORRECT - 
    console.log(customerConfig.getElementsByTagName("name")[0].childNodes[0].nodeValue);

    //SERIALIZE TO STRING
    var xmlString = new XMLSerializer().serializeToString(customerConfig);

    //THIS OUTPUTS THE FULL XML FILE, 
    //BUT STILL SHOWS <name>default</name> AND NOT <name>test</name>
    console.log(xmlString);
});

问题是 <name> 字段在字符串中没有设置为 test...我想有一个 序列化部分有问题吗?有人看到我做错了什么了吗?

谢谢!!

嗯,我找到问题了!

我正在设置 nodeValue 但我真的需要设置 data。所以我改变了

customerConfig.getElementsByTagName("name")[0].childNodes[0].nodeValue = "test";

customerConfig.getElementsByTagName("name")[0].childNodes[0].data= "test";

然后成功了!