使用XMLDOM修改XML文件

modify XML file using XMLDOM

本文关键字:文件 XML 修改 XMLDOM 使用      更新时间:2023-09-26

我无法使用XMLSerializer修改我的xml…我的代码是

var xml = request.responseText;
var DOMParser = require( 'xmldom' ).DOMParser;
var parser = new DOMParser();
var document = parser.parseFromString( xml, 'text/xml' );
document.getElementsByTagName( "a:Value" ).nodeValue = 12345;
var XMLSerializer = require( 'xmldom' ).XMLSerializer;
var serializer = new XMLSerializer();
var writetofile = serializer.serializeToString( document );
console.log( "writetofile" + writetofile );

我得到的XML与旧值相同,而不是12345。

请让我知道如何解决这个问题,尝试了所有的选项,但仍然不起作用。

尝试将第5行改为

document.getElementsByTagName("a:Value")[0].childNodes[0].data = '124241';

编辑

这是我在"runkit.com"上写的代码,用来演示我是如何解决评论中提到的问题的。

// some make-up xml
var xml = `
<root>
    <a:table xmlns:a="http://www.w3schools.com/furniture">
      <a:name>African Coffee Table</a:name>
      <a:width>80</a:width>
      <a:length>120</a:length>
      <a:Value>old value</a:Value>
    </a:table>
</root>`;
var DOMParser = require( 'xmldom' ).DOMParser;
var parser = new DOMParser();
var document = parser.parseFromString( xml, 'text/xml' );
// this won't work, but no error
document.getElementsByTagName( "a:Value" ).nodeValue = 12345;
// check: you will get "undefined" on the console
console.log( document.getElementsByTagName("a:Value").nodeValue);
// check: you will get "old value" on the console
console.log( document.getElementsByTagName("a:Value")[0].childNodes[0].data );
// here is another try
document.getElementsByTagName("a:Value")[0].childNodes[0].data = '12345';
// next, you will get "12345" on the console as expected
console.log( document.getElementsByTagName("a:Value")[0].childNodes[0].data );
var XMLSerializer = require( 'xmldom' ).XMLSerializer;
var serializer = new XMLSerializer();
var xmlstring = serializer.serializeToString( document );
console.log( "xmlstring: 'n" + xmlstring );

console.log()的相关输出:

undefined
old value
12345
xmlstring: 
<root>
    <a:table xmlns:a="http://www.w3schools.com/furniture">
      <a:name>African Coffee Table</a:name>
      <a:width>80</a:width>
      <a:length>120</a:length>
      <a:Value>12345</a:Value>
    </a:table>
</root>

感谢您的再次回复…

我已经找到了解决方案,粘贴在这里希望它能帮助别人使用的textContent属性

下行更改
document.getElementsByTagName( "a:Value" ).nodeValue = 12345;

document.getElementsByTagName( "a:Value" )[0].textcontent = 12345;

成功了! !现在,我得到的是带有更改值的整个XML。干杯! !