Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to write data to an xml file in node.js

My xml file

   <?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>

my 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!');
}); 

I want to replace my title tag and link as declared in my obj but this is not working.Can any one please change my code........

like image 464
MMR Avatar asked Oct 28 '25 05:10

MMR


2 Answers

Bumped into this post on google, I was looking for something slightly different, but here, this code of mine should solve this problem for anyone else who comes across this post.

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);
        });
    });
}
like image 87
Shardj Avatar answered Oct 30 '25 23:10

Shardj


Thanks Shard. Just more E6 convention: `

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));

`

like image 38
Phuhui Avatar answered Oct 30 '25 22:10

Phuhui



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!