我正在使用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而不是使用xmlbuilder-js创建人员,而可以使用xml2js-parser导入包含人员xml片段的文件,如本例中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/

10-14 03:55