gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 03:24:47 26 4
gpt4 key购买 nike

我正在使用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"
}
]
}

关于javascript - node.js 使用 xml2js 将 xml 转换为 json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45970830/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com