json - 使用 Node.js/Express/xml2js解析具有多个标签的 XML 文件
问题描述
我的问题如下:
我正在使用express.js
然后解析该文件下载一个 xml 文件。现在它看起来像这样:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE item [ ]>
<item lang="EN" >
<country>US</country>
<doc-number>123123123</doc-number>
<kind>A1</kind>
<date>20191017</date>
</item>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE item [ ]>
<item lang="EN" >
<country>US</country>
<doc-number>0938409384</doc-number>
<kind>A2</kind>
<date>20191018</date>
</item>
我正在使用该xml2js
库,但无法获取整个文档。我的代码看起来像这样
parseString(xml, function (err, result) {
console.log(obj);
})
XML 仅输出第一段 xml。我怎样才能解析这个所以我可以得到一个<item>
s数组?
我的第一个想法是将文档作为字符串循环,然后根据它拆分并以<?xml version="1.0" encoding="UTF-8"?>
这种方式解析数据。
谢谢!
解决方案
我认为单个 xml 文档不能有多个 xml 声明。此外,根元素必须始终存在。
因此,您提供的 xml 文档原则上是 2 个独立的 xml 文档。大多数解析器或 API 可能会拒绝它,因为它的格式不正确。
您是否可以控制文档的生成方式?如果是,则应确保存在单个 xml 声明和单个根元素。类似于:
<?xml version=“1.0” encoding=“utf-8”>
<items>
<item>…</item>
<item>…</item>
</items>
如果您对生成没有任何控制权,您可能应该将其拆分并单独解析文档,或者将它们连接起来并生成与上述类似的文档。
推荐阅读
- jquery - 单击未触发的jquery
- java - 添加形状超链接后无法读取代码 Excel 2010
- bash - 如何将周数和工作日转换为日期
- laravel - 如何检索提供的 ID 的倒数第二行
- javascript - 浏览器事件循环如何处理宏任务?
- java - Array.toString 返回内存地址,而不是实际值
- angular5 - 如何减少使用 *ngFor 结构指令在表中显示列表(从数据库中获取的 json 对象)的时间?
- android-studio - Android Studio 3.3 xml 在 LinearLayout 上预览内部阴影
- scalability - AKF 比例立方体替代品?
- testing - 如何将测试用例/需求套件从其他测试计划添加到新的测试计划并删除它们而不删除原始