使用Node.js / Express / xml2js解析具有多个<?xml>标记的XML文件

时间:2019-11-21 20:02:36

标签: json xml xml-parsing xml2js

我的问题如下:

我正在使用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仅输出仅第一部分。我该如何解析,以便获得<item>的数组?

我的第一个想法是将文档作为字符串循环,并根据<?xml version="1.0" encoding="UTF-8"?>对其进行拆分,然后以这种方式解析数据。

谢谢!

1 个答案:

答案 0 :(得分:1)

我认为单个xml文档不能有多个xml声明。此外,根元素必须始终存在。

因此,原则上,您提供的xml文档是2个单独的xml文档。由于格式不正确,大多数解析器或API可能会拒绝它。

您可以控制文档的生成方式吗?如果是,则应确保存在单个xml声明和单个root元素。类似于:

<?xml version=“1.0” encoding=“utf-8”>
<items>
  <item>…</item>
  <item>…</item>
</items>

如果您对生成没有任何控制,则可能应该将其拆分并分别解析文档,或者将它们串联起来生成类似于以上文档的文档。