【问题标题】:nodejs elementtree npm etree.write() pretty printingnodejs elementtree npm etree.write() 漂亮的打印
【发布时间】:2017-05-11 10:20:53
【问题描述】:

我在为 nodejs 使用 etree npm 时遇到了问题。我在我的应用程序中广泛使用 elementtree npm,因此我无法更改 npm。我正在使用下面的代码编写 XML。

var et = require('elementtree');
tailorData = fs.readFileSync(XML_FILE).toString();
etree = et.parse(tailorData);
// Do some changes in xml
var resultXml = etree.write(); // DOES NOT DO PRETTY PRINTING
fs.writeFileSync(tailoredXML, resultXml);

etree.write() 弄乱了整个 XML,我以后的处理就停止了。它不会在标签之后放置 endline。这就是 XML 现在的样子。

<?xml version='1.0' encoding='utf-8'?><Tailoring id="1234"><status>incomplete</status><Profile id="CIS_LEVEL_1"><title>CIS_LEVEL_1 Security Profile</title><select idref="file_group_owner_grub2_cfg" selected="true" /><select idref="file_user_owner_grub2_cfg" selected="true" /><select idref="file_permissions_grub2_cfg" selected="true" /></Profile></Tailoring>

以下是我的期望:

<?xml version='1.0' encoding='utf-8'?>
<Tailoring id="1234">
<status>incomplete</status>
<Profile id="CIS_LEVEL_1">
<title>CIS_LEVEL_1 Security Profile</title>
<select idref="file_group_owner_grub2_cfg" selected="true" />
<select idref="file_user_owner_grub2_cfg" selected="true" />
<select idref="file_permissions_grub2_cfg" selected="true" />
</Profile>
</Tailoring>

他们有什么方法可以在 nodejs 中实现上述结果吗?

【问题讨论】:

    标签: node.js parsing elementtree pretty-print


    【解决方案1】:

    想出了办法。使用非常轻量级的 npm "pretty-data" 来实现这一点。

    var pd = require('pretty-data').pd;
    
    var et = require('elementtree');
    tailorData = fs.readFileSync(XML_FILE).toString();
    etree = et.parse(tailorData);
    // Do some changes in xml
    var resultXml = etree.write();
    resultXml = pd.xml(resultXml); // THIS WILL DO THE PRETTY PRINTING.
    fs.writeFileSync(tailoredXML, resultXml);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-05-03
      • 2021-06-22
      • 1970-01-01
      • 2016-07-07
      • 2014-05-19
      • 1970-01-01
      • 2014-08-13
      相关资源
      最近更新 更多