Node + xmldom:如何更改javascript中单个XML字段的值?
使用节点 v.0.10.29, Express v4.12.0和xmldom v0.1.19,我正在尝试执行以下操作:
脚步
- 将一个XML文件读入一个string
- 使用xmldom 将string转换为XML对象
- 将
<name>default</name>
字段设置为<name>test</name>
- 将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";
那么它的工作!