我目前正在编写一个Node.js脚本,该脚本涉及使用xml2js库解析XML文件.该脚本读取一个XML文件,提取特定元素,并使用xml2js.Builder()构建一个新的XML输出.
该脚本非常适合简单的XML struct .然而,当我遇到具有嵌套元素、<customs>
元素的XML文件时,它抛出了Invalid character in name
错误.
const fs = require('fs');
const xml2js = require('xml2js');
const XmlStream = require('xml-stream');
const stream = fs.createReadStream('./test.xml');
const xmlStream = new XmlStream(stream);
const builder = new xml2js.Builder();
const MAX_ITEMS = 1;
let lists = [];
let listCount = 0;
xmlStream.on('endElement: list', function (item) {
if (listCount < MAX_ITEMS) {
lists.push(item);
listCount++;
} else {
stream.destroy();
}
});
stream.on('close', function () {
const outputXml = builder.buildObject({ lists: { list: lists } });
console.log(outputXml);
});
XML文件:
<?xml version="1.0" encoding="UTF-8"?>
<lists>
<list list-id="0001">
<first-name>first-name-1</first-name>
<last-name>second-name-1</last-name>
<customs>
<custom attribute-id="gender">female</custom>
</customs>
</list>
<list list-id="0002">
<first-name>first-name-2</first-name>
<last-name>second-name-2</last-name>
<customs>
<custom attribute-id="gender">male</custom>
</customs>
</list>
</lists>
为什么在处理xml2js中的嵌套元素时会出现此错误,以及如何修复该错误?