Javascript 在节点JS中使用fs extra更新xml文件

Javascript 在节点JS中使用fs extra更新xml文件,javascript,xml,node.js,fs,Javascript,Xml,Node.js,Fs,我想读取特定的xml标记并更新它 这是xml文件 <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <widget id="com.ionicframework.myapp450442" version="0.0.1" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0"> <nam

我想读取特定的xml标记并更新它

这是xml文件

  <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
  <widget id="com.ionicframework.myapp450442" version="0.0.1" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
   <name>myApp</name>
    <description>
        An Ionic Framework and Cordova project.
    </description>
    <author email="hi@ionicframework" href="http://ionicframework.com/">
      Ionic Framework Team
    </author>
    <content src="index.html"/>
    <access origin="*"/>
    <preference name="webviewbounce" value="false"/>
    <preference name="UIWebViewBounce" value="false"/>
    <preference name="DisallowOverscroll" value="true"/>
    <preference name="android-minSdkVersion" value="16"/>
    <preference name="BackupWebStorage" value="none"/>
    <feature name="StatusBar">
     <param name="ios-package" value="CDVStatusBar" onload="true"/>
    </feature>
  </widget>

myApp
爱奥尼亚框架和科尔多瓦项目。
但这对我不起作用

这是我使用的代码

   fs.readFile(configFile, 'utf-8',function(err, data) {
      if (err) {
         return console.log(err);
      }

      var name="<name>"+appName+"</name>";
      var cursor = "//cursor";
      var result = data.replace(/\/\/cursor/,name);

      fs.writeFile(configFile, result, 'utf-8', function(err) {
          if (err) return console.log(err);
      });
      fs.writeFile(appIconFile, icon, 'base64', function(err) {
          if (err) return console.log(err);
      });
  });
fs.readFile(配置文件,'utf-8',函数(错误,数据){
如果(错误){
返回console.log(err);
}
var name=”“+appName+”;
var cursor=“//cursor”;
var result=data.replace(/\/\/cursor/,name);
fs.writeFile(配置文件,结果,'utf-8',函数(err){
if(err)返回console.log(err);
});
fs.writeFile(appIconFile,图标,'base64',函数(err){
if(err)返回console.log(err);
});
});
谁能告诉我这里有什么问题吗


有更好的npm模块吗?

您可以将XML解析为JSON,替换需要,然后保存回XML

例如,查看模块:


您可以将XML解析为JSON,替换需要,然后保存回XML

例如,查看模块:


stdob的回答有细微变化

var fs = require('fs'),
    xml2js = require('xml2js');

var parser = new xml2js.Parser(),
    xmlBuilder = new xml2js.Builder();

fs.readFile(configFile, function(err, data) {
    parser.parseString(data, function (err, result) {

        console.log(result)        

        result.widget.name = ['new name'];

        var xml = xmlBuilder.buildObject(result);

        fs.writeFile(configFile, xml);

    });
});

他使用了不必要的模块

stdob的答案有微小变化

var fs = require('fs'),
    xml2js = require('xml2js');

var parser = new xml2js.Parser(),
    xmlBuilder = new xml2js.Builder();

fs.readFile(configFile, function(err, data) {
    parser.parseString(data, function (err, result) {

        console.log(result)        

        result.widget.name = ['new name'];

        var xml = xmlBuilder.buildObject(result);

        fs.writeFile(configFile, xml);

    });
});

他使用了不必要的模块

我可以得到小部件版本吗?我可以得到小部件版本吗。。?