代码之家  ›  专栏  ›  技术社区  ›  Bene

节点。js使用xml2js将xml转换为json

  •  0
  • Bene  · 技术社区  · 7 年前

    我正在使用节点。js包xml2js将xml转换为json。 https://www.npmjs.com/package/xml2js

    我的问题是这些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的结果。字符串化(结果、搜索、事件)

    事件标记在生成的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"
                },
    

    事件[1].$。身份证件

    • 事件。事件-->未定义
    • 事件。事件$--&燃气轮机;未定义
    • 事件。$--&燃气轮机;未定义

    1 回复  |  直到 7 年前
        1
  •  3
  •   Anh Thang Bui    7 年前

    Javascript从0开始,您应该得到 事件[0]。事件[0].$。身份证件

    另外,你可以试试另一个软件包( 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"
            }
        ]
    }