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

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

脚步

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

问题

问题是我设置<name>字段后,它在对象中正确设置,但是当我将它转换为一个string时, <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>字段没有设置在string中test …我想在序列化部分问题? 任何人看到我做错了什么?

谢谢!!

那么我想出了问题!

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

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

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

那么它的工作!

Interesting Posts