Python中如何将XML格式字符串解析为dict字典或JSON对象
解析方法说明
所有主流编程语言的XML解析库都原生支持直接读取XML格式的字符串完成解析,不需要先将字符串写入本地XML文件再读取,完全可以满足你的解析需求。
注意:你提供的示例XML存在标签匹配错误:开标签
<confidence>对应的闭合标签错误写为</confidence_booster>,需要先修正这类标签不匹配的问题,才能被XML解析器正常识别,修正后的合法XML片段如下:
<Pattern id="001" name="Tesla" type="car"> <trigger>electric</trigger> <confidence>0.9</confidence> <condition> {car ^12} </condition> </Pattern>
实现示例(Python)
无第三方依赖方案
使用Python标准库xml.etree.ElementTree即可完成解析,不需要额外安装依赖,可直接输出符合要求的字典,也可一键转JSON:
import xml.etree.ElementTree as ET import json def parse_xml_str(xml_str): root = ET.fromstring(xml_str) res = root.attrib for child in root: content = child.text.strip() if child.text else "" # 按需做类型转换,比如将confidence字段转为浮点数 if child.tag == "confidence": try: content = float(content) except ValueError: pass res[child.tag] = content return res # 传入XML字符串直接解析 xml_text = '''<Pattern id="001" name="Tesla" type="car"> <trigger>electric</trigger> <confidence>0.9</confidence> <condition> {car ^12} </condition> </Pattern>''' pattern = parse_xml_str(xml_text) # 输出的字典结构和预期完全一致 print(pattern) # 如需转JSON,直接调用json模块方法即可 pattern_json = json.dumps(pattern, indent=2, ensure_ascii=False) print(pattern_json)
运行后得到的字典结果:
{ "id": "001", "name": "Tesla", "type": "car", "trigger": "electric", "confidence": 0.9, "condition": "{car ^12}" }
更简便的第三方库方案
如果需要处理更复杂的嵌套XML结构,可以使用xmltodict库,直接传入XML字符串即可输出结构化字典,适配成本更低:
# 安装命令:pip install xmltodict import xmltodict import json parse_result = xmltodict.parse(xml_text) # 直接转JSON json_result = json.dumps(parse_result, indent=2, ensure_ascii=False)
如果是其他编程语言(Java/Go/JS等),对应内置/主流第三方XML解析库也都支持字符串入参解析,逻辑和上述Python实现一致,不需要依赖本地文件。
内容的提问来源于stack exchange,提问作者marlon
相关产品推荐
相关产品推荐

