如何在Node.js中将数据写入XML文件

3

我的xml文件

   <?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
      <title>XpertDox Home Page</title>
  <link>http://www.xpertdox.com</link>
    <description>Find a doctor</description>
<item>
<title>Xpertdox</title>
<link>http://www.xpertdox.com/rss.xml</link>
<description>Find an Xpert Doctor for an unknown Disease</description>
</item>

  I want  to  add this
    <item>
<title>Tony</title>
<link>startk</link>
<description>hi</description>
</item>

我的 Node.js

var obj = {title: "Tony", link: "Stark" , "description":"hi"};
var fs = require('fs');
var xml2js = require('xml2js');

var builder = new xml2js.Builder();
var xml = builder.buildObject(obj);  

fs.writeFile('feed.xml', xml, function (err){
if (err) throw err;
    console.log('It\'s saved!');
}); 

我想按照obj中声明的替换我的标题标签和链接,但这不起作用。可以请有经验的人修改我的代码吗?


你能具体说明一下你遇到的错误/意外行为吗? - Cristina_eGold
我理解的没错吧,您想从文件中读取XML,替换其中的“title”和“link”值,然后将其写回到文件中? - Alexandr Lazarev
嗨deepdownunder,我遇到了打开文件权限被拒绝的错误。 - MMR
当我创建一个新对象时,它会覆盖旧对象。 - MMR
3个回答

3

我在谷歌上看到了这篇文章,虽然我寻找的与此略有不同,但是我的代码可以为遇到此问题的其他人提供解决方案。

function xmlFileToObject(path) {
    return new Promise((resolve,reject) => {
        getFile(path).then(xml => {
            parseXml(xml).then(result => {
                resolve(result);
            });
        });
    });
}
function getFile(path) {
    return new Promise((resolve, reject) => {
        fs.readFile(path, 'utf8', function (err,data) {
            if (err) console.error(err);
            resolve(data);
        });
    });
}
function parseXml(xml) {
    return new Promise((resolve,reject) => {
        var parseString = require('xml2js').parseString;
        parseString(xml, function (err, result) {
            resolve(result);
        });
    });
}

2
感谢Shard。 这是更多的E6惯例: `

const getFile = dir => new Promise((resolve, reject) => {
  fs.readFile(dir, 'utf8', (err, data) =>
    (err ? reject(err) : resolve(data)));
});

const parseXml = xml => new Promise((resolve, reject) => {
  require('xml2js').parseString(xml, (err, result) =>
    (err ? reject(err) : resolve(result)));
});

const xmlFileToObject = dir => getFile(dir)
  .then(xml => parseXml(xml))
  .then(result => console.log(result))
  .catch(e => console.error(e));

`


0
var builder = require('xmlbuilder');
var doc = builder.create('root');

doc.ele('xmlbuilder')
    .att('for', 'node-js')
    .ele('repo')
      .att('type', 'git')
      .txt('git://github.com/oozcitak/xmlbuilder-js.git') 
    .up()
  .up()
  .ele('test')
    .txt('complete');

console.log(doc.toString({ pretty: true }));

请简要描述您的代码。 - Andy A.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接