如何用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为例):
- 全局定位目标元素:利用XPath表达式
//logField可以直接穿透多层嵌套的<logRecord>,匹配所有<logField>元素,无需逐层遍历嵌套结构。 - 提取并处理属性:提取每个
<logField>的三个指定属性,同时将oldValue中的空格转为空字符串,和目标JSON格式对齐。 - 转换为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
相关产品推荐
相关产品推荐

