如何将带id属性的XML转换为指定格式的JSON?
如何将指定XML转换为目标格式JSON
下面提供几种实用的实现方式,帮你把给定的XML转换成要求的JSON格式:
方法一:使用Python(标准库,无需额外安装)
Python自带的xml.etree.ElementTree可以直接解析XML,手动构建目标JSON结构即可:
import xml.etree.ElementTree as ET import json # 替换为你的XML内容 xml_content = '''<?xml version="1.0" encoding="UTF-8"?> <AdditionalFields> <AdditionalField id="Token">Tr3stdGf9Nf7zPJBPzwiv1</AdditionalField> <AdditionalField id="OrderId">10449-1371587</AdditionalField> <AdditionalField id="Code">0190</AdditionalField> <AdditionalField id="TxnNumber">279</AdditionalField> <AdditionalField id="TranslationID" /> </AdditionalFields>''' # 解析XML根节点 root = ET.fromstring(xml_content) additional_fields = {} # 遍历所有AdditionalField节点,构建键值对 for field in root.findall('AdditionalField'): field_id = field.get('id') # 处理空节点:没有文本内容就设为空字符串 field_value = field.text.strip() if field.text else "" additional_fields[field_id] = field_value # 生成目标JSON并输出 result = {"AdditionalFields": additional_fields} print(json.dumps(result, indent=2))
运行代码后就能得到你需要的JSON格式。
方法二:使用JavaScript(Node.js环境)
需要借助xml2js库解析XML,步骤如下:
- 先安装依赖:
npm install xml2js
- 编写转换代码:
const xml2js = require('xml2js'); const xmlContent = `<?xml version="1.0" encoding="UTF-8"?> <AdditionalFields> <AdditionalField id="Token">Tr3stdGf9Nf7zPJBPzwiv1</AdditionalField> <AdditionalField id="OrderId">10449-1371587</AdditionalField> <AdditionalField id="Code">0190</AdditionalField> <AdditionalField id="TxnNumber">279</AdditionalField> <AdditionalField id="TranslationID" /> </AdditionalFields>`; // 配置解析器,处理空值和属性映射 const parser = new xml2js.Parser({ explicitArray: false, // 避免单个节点被强制转为数组 valueProcessors: [value => value === undefined ? "" : value.trim()] }); parser.parseString(xmlContent, (err, parsedResult) => { if (err) throw err; // 兼容单个/多个节点的情况 const fields = Array.isArray(parsedResult.AdditionalFields.AdditionalField) ? parsedResult.AdditionalFields.AdditionalField : [parsedResult.AdditionalFields.AdditionalField]; const additionalFields = {}; fields.forEach(field => { additionalFields[field.$.id] = field._ || ""; }); const finalResult = { AdditionalFields: additionalFields }; console.log(JSON.stringify(finalResult, null, 2)); });
方法三:在线工具快速转换
如果不想写代码,可以用XML转JSON的在线工具,在工具设置里开启「将节点属性转为键」「空节点转为空字符串」这类选项,粘贴XML内容后就能直接得到目标JSON。
内容的提问来源于stack exchange,提问作者burak ramazan
相关产品推荐
相关产品推荐

