我在Node.js(v0.12.0)中替换XML节点内的文本时遇到了一些麻烦。 “nodeValue”属性似乎让我从节点读取文本,但不会更改它。
我正在使用节点模块“xpath.js”(1.0.6)和“xmldom”(0.1.19)
我的代码:
// Use xpath.js and xmldom to fetch the "metadata" node
var doc = new Parser().parseFromString(jobXml, 'application/xml');
var nodes = select(doc, '/job/metadata/metafield[@name="metadata"]');
var metaNode = nodes[0];
console.log(metaNode.firstChild.nodeValue); // Output is "hello"
metaNode.firstChild.nodeValue = 'world'; // Replace "hello" with "world"
console.log(metaNode.firstChild.nodeValue); // Output is now "world"
var result = new Serializer().serializeToString(doc);
console.log(result); // text has reverted to "hello"
我已经整理了一个runnable.com项目,证明了这种行为:
http://runnable.com/VWw18wFQKv46Ng_V/sean-s-sandbox-for-node-js-and-hello-world
有人能发现我做错了吗?还有另一种方法可以达到这个目的吗?