node.js - 如何在node.js中导入xmlbuilder的文本文件

标签 node.js xml-builder

我正在使用 xmlbuilder npm 包 - 它看起来很强大,除了我想将现有的 xml 文件导入 xmlbuilder 并操作元素/属性等,而不是从头开始构建整个东西。可以用这个包来做到这一点,或者可能是一个解决方法?

var builder = require('xmlbuilder');
fs.readFile('my-file.txt', 'utf8', function(err, data) {  
if (err) throw err;
    //Load data into xmlbuilder?
    //
});

最佳答案

这可以通过使用库的 importDocument 函数来实现,并且根据您的需要,也可以使用其他库。关键是要认识到 xmlbuilder-js 和其他库的局限性,然后制定相应的策略。例如,调用 xmlbuild-js.create() 后,您无法从根部遍历文档来获取现有的子元素,只能追加到末尾。了解这一点后,您可以计划如何在 JSON 中创建结构,或者将 xml 从文件导入到 JSON,对其进行操作,然后在 JSON 准备就绪时使用 xmlbuilder-js.create()。或者您可以使用 importDocument 根据需要插入片段。另一种策略是重新设计您的 xml 文档,使它们成为片段,或者只是从中获取片段,然后您可以在 xml 构建器中构建根。

以下是从 xmlbuilder-js documentation 附加文档的示例

var peopleNode = xmlbuilder.create('roster').ele('people');

for (var i = 1; i <= 3; i++) {   // Create an XML fragment   person =
  xmlbuilder.create('person').att('id', i);   // Import the root node of
  the fragment after   // the people node of the main XML document  
  peopleNode.importDocument(person); 
}

例如,您可以使用 xml2js-parser 导入包含人员 xml 片段的文件,而不是使用 xmlbuilder-js 创建人员,如 their docs 中的示例所示。 :

const fs = require('fs');
const Parser = require('xml2js-parser');

var parser = new Parser({trim: true});
fs.readFile(__dirname + '/foo.xml', (err, xml) => {
    parser.parseString(xml, (err, result) => {
    console.dir(result);
  });
});

这就是我采取的方法,我在尝试做同样的事情时碰巧看到了你的问题。

关于node.js - 如何在node.js中导入xmlbuilder的文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48613027/

相关文章:

ruby-on-rails - 使用 Rspec 测试 XmlBuilder

javascript - 无法使用 "xmlbuilder"node.js 模块在 XML 中创建 CDATA 部分

node.js - 如何在nodejs中屈服于按键检测?

javascript - 获取node中某个模块的路径(模块文件夹,不是入口文件)

node.js - mongoDB、node JS 和最短路径函数,有什么可用的选项吗?

node.js - 使用 xml2js 和 xmlbuilder 将 XML 解析为 JSON 并返回……?

javascript - 使用 xml-builder Node 模块打印尖括号时出现问题

mysql - Node mysql 提取结果并在日志记录期间更改它们

javascript - 克隆主干模型属性