【问题标题】:modify XML file using XMLDOM使用 XMLDOM 修改 XML 文件
【发布时间】:2016-10-28 09:24:48
【问题描述】:

我无法使用 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 );

我正在获取具有相同旧值而不是 12345 的 XML。

请告诉我如何解决这个问题..尝试了所有选项..仍然无法正常工作.:(

【问题讨论】:

    标签: javascript xml node.js xmlserializer xmldom


    【解决方案1】:

    尝试将第 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>
    

    【讨论】:

    • 感谢您回复 swatchai..但是在进行了您建议的更改之后,您仍然会在 XML 中获得旧值。 :(
    【解决方案2】:

    感谢您再次回复..appricited!!!

    我已经找到了解决方案,贴在这里希望它会帮助别人 使用 textContent 属性 更改以下行

    document.getElementsByTagName( "a:Value" ).nodeValue = 12345;
    

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

    成功了!!! 现在我正在获取具有更改值的整个 XML。 干杯!!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-28
      • 2015-01-01
      • 1970-01-01
      相关资源
      最近更新 更多