Python 3.x实现带属性与文本值的XML等效字典求助
解决方法与工具包建议
你的问题核心是用普通字典结构时,第4行代码直接覆盖了parent对应的字典对象,导致属性丢失。下面提供几种可行的解决方案及工具库:
1. 使用Python标准库 xml.etree.ElementTree
无需额外安装,直接通过元素对象同时设置属性和文本:
import xml.etree.ElementTree as ET # 创建带属性的元素 parent = ET.Element("parent", name="abc") # 设置元素文本内容 parent.text = "123" # 生成XML字符串(unicode编码避免乱码) xml_result = ET.tostring(parent, encoding='unicode') print(xml_result)
输出结果:
<parent name="abc">123</parent>
2. 使用第三方库 dicttoxml
如果偏好字典转XML的方式,dicttoxml支持通过特定键区分属性和文本:
首先安装库:
pip install dicttoxml
然后调整字典结构,用#text表示元素文本,_前缀表示属性:
import dicttoxml my_dict = { "parent": { "_name": "abc", "#text": "123" } } # 生成XML(root=False避免自动添加根节点) xml_result = dicttoxml.dicttoxml(my_dict, root=False).decode('utf-8') print(xml_result)
3. 使用功能更强的第三方库 lxml
lxml是更高效的XML处理库,支持更多高级特性(如XPath、XML Schema验证):
安装库:
pip install lxml
代码示例:
from lxml import etree parent = etree.Element("parent", name="abc") parent.text = "123" # 生成格式化的XML字符串 xml_result = etree.tostring(parent, encoding='unicode', pretty_print=True) print(xml_result)
内容的提问来源于stack exchange,提问作者cloud jockey
相关产品推荐
相关产品推荐

