使用nodejs将元素添加到XML文件

时间:2014-07-22 04:45:41

标签: javascript xml node.js xml-parsing elementtree

我有一个XML文件

<main>
<iframe>
    <name>1234</name>
    <url1>123</url1>
    <url2>345</url2>
</iframe>
<iframe>
    <name>563466</name>
    <url1>345435</url1>
    <url2>3453</url2>
</iframe>
</main>

我需要使用nodejs

在上面的xml文件中的main中插入以下元素
<iframe>
    <name>563466</name>
    <url1>345435</url1>
    <url2>3453</url2>
</iframe>

使用elementtree模块创建xml文件,如下所示

var et = require('elementtree');
var XML = et.XML;
var ElementTree = et.ElementTree;
var element = et.Element;
var subElement = et.SubElement;
root = element('main');
root.set('xmlns', 'http://www.w3.org/2005/Atom');

iframeTag = subElement(root, 'iframe');

iframeTitle = subElement(iframeTag, 'title');
iframeTitle.text = title;

iframeUrl1 = subElement(iframeTag, 'url1');
iframeUrl1.text = url1;

iframeUrl2 = subElement(iframeTag, 'url2');
iframeUrl2.text = url2;

etree = new ElementTree(root);
xml = etree.write({'xml_declaration': false});

我可以使用elementtree模块添加元素。但是,如果我重新启动服务器,root将是未定义的。所以我不能以上述方式更新元素。谁能帮我解决一下?

1 个答案:

答案 0 :(得分:0)

我找到了解决方案,

var dataNew, etreeNew;
dataNew = fs.readFileSync('report.xml').toString();
etreeNew = et.parse(dataNew);

iframeTag = subElement(etreeNew._root, 'iframe');

iframeTitle = subElement(iframeTag, 'title');
iframeTitle.text = title;

iframeUrl1 = subElement(iframeTag, 'url1');
iframeUrl1.text = url1;

iframeUrl2 = subElement(iframeTag, 'url2');
iframeUrl2.text = url2;

etree = new ElementTree(etreeNew._root);
xml = etree.write({'xml_declaration': false});

For elementtree parsing