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

2024-04-16

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

  1. Read an XML 文件转换为字符串
  2. 转换字符串进入一个XML对象 using xmldom https://www.npmjs.com/package/xmldom
  3. Set the <name>default</name>字段到<name>test</name>
  4. 将 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(使用前将#替换为@)

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

随机推荐