You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用JavaScript提取XML属性及值并转换为目标JSON格式?

将嵌套XML转换为指定格式JSON数组的可行方案

需要将给定的多层嵌套<logRecord>结构的XML数据,提取<class>节点下<logField>元素的fieldName、oldValue、newValue属性,生成对应键值对的JSON数组,是否可行?

输入XML

<logRecord>
  <logRecord>
    <logRecord>
      <class name="dto">
        <logField fieldName="ID" oldValue=" " newValue="650"/>
        <logField fieldName="submissionDt" oldValue="" newValue="03-12-2022"/>
      </class>
    </logRecord>
  </logRecord>
</logRecord>

目标JSON

[{
  "fieldName": "ID",
  "oldValue": "",
  "newValue": "650"
}, {
  "fieldName": "submissionDt",
  "oldValue": "",
  "newValue": "03-12-2022"
}]

当然可行,以下是具体实现方法(以Python为例):

  1. 全局定位目标元素:利用XPath表达式//logField可以直接穿透多层嵌套的<logRecord>,匹配所有<logField>元素,无需逐层遍历嵌套结构。
  2. 提取并处理属性:提取每个<logField>的三个指定属性,同时将oldValue中的空格转为空字符串,和目标JSON格式对齐。
  3. 转换为JSON格式:将提取的属性列表转为格式化后的JSON字符串。

代码示例

import xml.etree.ElementTree as ET
import json

# 输入XML内容
xml_content = '''
<logRecord>
  <logRecord>
    <logRecord>
      <class name="dto">
        <logField fieldName="ID" oldValue=" " newValue="650"/>
        <logField fieldName="submissionDt" oldValue="" newValue="03-12-2022"/>
      </class>
    </logRecord>
  </logRecord>
</logRecord>
'''

# 解析XML
root = ET.fromstring(xml_content)

# 提取属性并处理空格
result_list = []
for log_field in root.findall('.//logField'):
    field_attrs = log_field.attrib
    processed_data = {
        'fieldName': field_attrs['fieldName'],
        'oldValue': field_attrs['oldValue'].strip() if field_attrs['oldValue'] else '',
        'newValue': field_attrs['newValue']
    }
    result_list.append(processed_data)

# 生成格式化JSON
target_json = json.dumps(result_list, indent=2)
print(target_json)

执行上述代码后,输出结果将完全匹配目标JSON格式。


内容的提问来源于stack exchange,提问作者wendy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 15:55:21