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

步骤

  1. XML 文件读入字符串
  2. 使用xmldom将字符串转换为XML对象
  3. 设置<name>default</name>字段到 <name>test</name>
  4. 将 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"; 

然后成功了!


评论关闭
IT虾米网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!