繁体   English   中英

node.js使用xml2js将xml转换为json

[英]node.js transform xml into json with xml2js

我正在使用node.js包xml2js将xml转换为json。 文档在这里: https : //www.npmjs.com/package/xml2js

我的问题是这些xml的属性未正确转换。

具有多个事件的示例XML

<events><event id="E0-001-098932239-8"></event><event id="E0-001-105389601-2"></event><event id="E0-001-104342965-3"></event><event id="E0-001-104830349-3"></event><event id="E0-001-105374979-6"></event><event id="E0-001-105389620-7"></event><event id="E0-001-104247759-2"></event><event id="E0-001-104342949-5">

JSON.stringify(result.search.events)的结果

事件标记在生成的JSON中只有一次-我的期望是它应该具有多个标记事件。 因此,我认为转换过程出错了。 我为解析器尝试了多个选项,例如ignoreAttrs,explicitArray或explicitChildren,但没有成功。

[{
    "event": [{
            "$": {
                "id": "E0-001-098932239-8"
            },
            ]
        }, {
            "$": {
                "id": "E0-001-105389601-2"
            },
        }, {
            "$": {
                "id": "E0-001-104342965-3"
            },
        }, {
            "$": {
                "id": "E0-001-104830349-3"
            },

访问JSON元素

经过正确的转换后,我希望可以通过event [1]。$。id简单地访问JSON元素

但所有尝试均未成功:

  • events.event->未定义
  • events.event。$->未定义
  • $->未定义

我的问题现在是:如何正确将xml转换为JSON并正确访问元素?

Javascript从0开始,您应该获得events [0] .event [0]。$。id

另外,您可以尝试使用其他包装( camaro )轻松简单地更改所需的结果。

例:

const xml = '<events><event id="E0-001-098932239-8"></event><event id="E0-001-105389601-2"></event><event id="E0-001-104342965-3"></event><event id="E0-001-104830349-3"></event><event id="E0-001-105374979-6"></event><event id="E0-001-105389620-7"></event><event id="E0-001-104247759-2"></event><event id="E0-001-104342949-5"></event></events>'

const temp = {
    events: ['/events/event', {
        id: '@id'
    }]
}

const transform = require('camaro')
const results = transform(xml, temp)

console.log(JSON.stringify(results, null, 2))

结果

{
    "events": [
        {
            "id": "E0-001-098932239-8"
        },
        {
            "id": "E0-001-105389601-2"
        },
        {
            "id": "E0-001-104342965-3"
        },
        {
            "id": "E0-001-104830349-3"
        },
        {
            "id": "E0-001-105374979-6"
        },
        {
            "id": "E0-001-105389620-7"
        },
        {
            "id": "E0-001-104247759-2"
        },
        {
            "id": "E0-001-104342949-5"
        }
    ]
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM