使用 XMLDOM 修改 XML 文件
modify XML file using XMLDOM
我无法使用 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>
感谢再次回复..appricited!!!
我已经找到解决办法了,贴在这里希望对大家有帮助
使用的 textContent 属性
更改以下行
document.getElementsByTagName( "a:Value" ).nodeValue = 12345;
至
document.getElementsByTagName( "a:Value" )[0].textcontent = 12345;
成功了!!!
现在我得到了整个 XML 的值已更改。
干杯!!
我无法使用 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>
感谢再次回复..appricited!!!
我已经找到解决办法了,贴在这里希望对大家有帮助 使用的 textContent 属性 更改以下行
document.getElementsByTagName( "a:Value" ).nodeValue = 12345;
至
document.getElementsByTagName( "a:Value" )[0].textcontent = 12345;
成功了!!! 现在我得到了整个 XML 的值已更改。 干杯!!