Using node https://nodejs.org/en/v.0.10.29,Express http://expressjs.com/v4.12.0 和xmldom https://www.npmjs.com/package/xmldomv0.1.19,我正在尝试执行以下操作:
Steps
- Read an XML 文件转换为字符串
-
转换字符串进入一个XML对象 using xmldom https://www.npmjs.com/package/xmldom
- Set the
<name>default</name>
字段到<name>test</name>
- 将 XML 对象转换回字符串
Problem
问题是我设置后<name>
字段,它在对象中设置正确,但是当我将其转换为字符串时,<name>
字段恢复为旧值(错误)。
Code
代码如下:
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";
to
customerConfig.getElementsByTagName("name")[0].childNodes[0].data= "test";
然后就成功了!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)