gpt4 book ai didi

node.js - xml 到 json,有没有办法使用属性的值作为键以便于查找?

转载 作者:太空宇宙 更新时间:2023-11-03 23:14:35 25 4
gpt4 key购买 nike

我有一个包含多个项目的 XML 文件,我尝试了几个 xml 到 json 库并选择了 csv-parser。现在,如果我想在转换对象之前检查对象是否满足我想要的要求,我需要循环遍历项目,然后循环遍历属性标签以查看是否可以找到属性 DisplayType 并检查它的值。

有没有办法告诉 csv-parser 使用“name”属性作为对象的 ID?

有时我会互相插入 5 个 for 循环,这会让人感到困惑。

编辑:主要目标是过滤 property[@name='DisplayType'] 值为 Weapon 的项目,循环遍历这些项目并执行一些操作。然后对其他特性和属性重复并重复。

在插入数据库之前,我需要过滤、排列和添加数据。

“原始”:

<items>
<item name="Knife">
<property name="HoldType" value="31"/>
<property name="DisplayType" value="Weapon"/>
<property name="Meshfile" value="Items/Misc/parcelPrefab"/>
<property name="Material" value="MresourceCrop"/>
<property name="Stack" value="10"/>
<property name="Value" value="3"/>
<events>
<event name="Testing Events" type="Something"/>
<event name="Testing Events2" type="Something"/>
</events>
</item>
<item name="Knife">
<property name="HoldType" value="31"/>
<property name="DisplayType" value="Weapon"/>
<property name="Meshfile" value="Items/Misc/parcelPrefab"/>
<property name="Material" value="MresourceCrop"/>
<property name="Stack" value="10"/>
<property name="Value" value="3"/>
</item>
</items>

Json(示例):

{
"items": {
"item": [
{
"name": "Knife",
"property": [
{
"name": "HoldType",
"value": "31"
},
{
"name": "DisplayType",
"value": "Weapon"
},
{
"name": "Meshfile",
"value": "Items/Misc/parcelPrefab"
},
{
"name": "Material",
"value": "MresourceCrop"
},

我希望得到什么:

{
"items": {
"Knife": {
"name": "Knife",
"property": [
"HoldType": {
"name": "HoldType",
"value": "31"
},
"DisplayType": {
"name": "DisplayType",
"value": "Weapon"
},
"Meshfile": {
"name": "Meshfile",
"value": "Items/Misc/parcelPrefab"
},
"Material": {
"name": "Material",
"value": "MresourceCrop"
},

最佳答案

你能试试这个吗

const { transform } = require('camaro')

;(async function () {
const xml = `
<items>
<item name="Knife">
<property name="HoldType" value="31"/>
<property name="DisplayType" value="Weapon"/>
<property name="Meshfile" value="Items/Misc/parcelPrefab"/>
<property name="Material" value="MresourceCrop"/>
<property name="Stack" value="10"/>
<property name="Value" value="3"/>
<events>
<event name="Testing Events" type="Something"/>
<event name="Testing Events2" type="Something"/>
</events>
</item>
<item name="Knife">
<property name="HoldType" value="31"/>
<property name="DisplayType" value="Weapon"/>
<property name="Meshfile" value="Items/Misc/parcelPrefab"/>
<property name="Material" value="MresourceCrop"/>
<property name="Stack" value="10"/>
<property name="Value" value="3"/>
</item>
</items>
`

const template = {
items: {
Knife: ['/items/item[@name="Knife"]', {
Name: '@name',
HoldType: 'property[@name="HoldType"]/@value',
DisplayType: 'property[@name="DisplayType"]/@value',
Meshfile: 'property[@name="Meshfile"]/@value',
Material: 'property[@name="Material"]/@value',
Stack: 'property[@name="Stack"]/@value',
Value: 'property[@name="Value"]/@value',
}]
}
}

const result = await transform(xml, template)

console.log(JSON.stringify(result, null, 2))
})()

输出

enter image description here

关于node.js - xml 到 json,有没有办法使用属性的值作为键以便于查找?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57080888/

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