Python将字典转换为XML的方法

 更新时间:2020年08月01日 15:00:39   作者:David Beazley  
这篇文章主要介绍了Python将字典转换为XML的方法,文中讲解非常细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下

问题

你想使用一个Python字典存储数据,并将它转换成XML格式。

解决方案

尽管 xml.etree.ElementTree 库通常用来做解析工作,其实它也可以创建XML文档。 例如,考虑如下这个函数:

from xml.etree.ElementTree import Element

def dict_to_xml(tag, d):
'''
Turn a simple dict of key/value pairs into XML
'''
elem = Element(tag)
for key, val in d.items():
  child = Element(key)
  child.text = str(val)
  elem.append(child)
return elem

下面是一个使用例子:

>>> s = { 'name': 'GOOG', 'shares': 100, 'price':490.1 }
>>> e = dict_to_xml('stock', s)
>>> e
<Element 'stock' at 0x1004b64c8>
>>>

转换结果是一个 Element 实例。对于I/O操作,使用 xml.etree.ElementTree 中的 tostring() 函数很容易就能将它转换成一个字节字符串。例如:

>>> from xml.etree.ElementTree import tostring
>>> tostring(e)
b'<stock><price>490.1</price><shares>100</shares><name>GOOG</name></stock>'
>>>

如果你想给某个元素添加属性值,可以使用 set() 方法:

>>> e.set('_id','1234')
>>> tostring(e)
b'<stock _id="1234"><price>490.1</price><shares>100</shares><name>GOOG</name>
</stock>'
>>>

如果你还想保持元素的顺序,可以考虑构造一个 OrderedDict 来代替一个普通的字典。请参考1.7小节。

讨论

当创建XML的时候,你被限制只能构造字符串类型的值。例如:

def dict_to_xml_str(tag, d):
  '''
  Turn a simple dict of key/value pairs into XML
  '''
  parts = ['<{}>'.format(tag)]
  for key, val in d.items():
    parts.append('<{0}>{1}</{0}>'.format(key,val))
  parts.append('</{}>'.format(tag))
  return ''.join(parts)

问题是如果你手动的去构造的时候可能会碰到一些麻烦。例如,当字典的值中包含一些特殊字符的时候会怎样呢?

>>> d = { 'name' : '<spam>' }

>>> # String creation
>>> dict_to_xml_str('item',d)
'<item><name><spam></name></item>'

>>> # Proper XML creation
>>> e = dict_to_xml('item',d)
>>> tostring(e)
b'<item><name>&lt;spam&gt;</name></item>'
>>>

注意到程序的后面那个例子中,字符 ‘<' 和 ‘>' 被替换成了 &lt; 和 &gt;

下面仅供参考,如果你需要手动去转换这些字符, 可以使用 xml.sax.saxutils 中的 escape() unescape() 函数。例如:

>>> from xml.sax.saxutils import escape, unescape
>>> escape('<spam>')
'&lt;spam&gt;'
>>> unescape(_)
'<spam>'
>>>

除了能创建正确的输出外,还有另外一个原因推荐你创建 Element 实例而不是字符串, 那就是使用字符串组合构造一个更大的文档并不是那么容易。 而 Element 实例可以不用考虑解析XML文本的情况下通过多种方式被处理。 也就是说,你可以在一个高级数据结构上完成你所有的操作,并在最后以字符串的形式将其输出。

以上就是Python将字典转换为XML的方法的详细内容,更多关于Python将字典转换为XML的资料请关注脚本之家其它相关文章!

相关文章

  • python基础之类属性和实例属性

    python基础之类属性和实例属性

    这篇文章主要介绍了python类属性和实例属性,实例分析了Python中返回一个返回值与多个返回值的方法,需要的朋友可以参考下
    2021-10-10
  • python数据结构之链表的实例讲解

    python数据结构之链表的实例讲解

    下面小编就为大家带来一篇python数据结构之链表的实例讲解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-07-07
  • python 包实现JSON 轻量数据操作

    python 包实现JSON 轻量数据操作

    这篇文章主要介绍了python 包实现JSON 轻量数据操作,文章介绍内容首先将对象转为json字符串展开主题详细内容需要的小伙伴可以参考一下
    2022-04-04
  • Python中顺序结构和循环结构示例代码

    Python中顺序结构和循环结构示例代码

    这篇文章主要介绍了Python中的条件语句和循环语句,条件语句用于根据条件执行不同的代码块,循环语句用于重复执行一段代码,文章还详细说明了range函数的使用和continue与break语句的作用,需要的朋友可以参考下
    2025-02-02
  • 在pycharm中运行js文件以及附加node.js下载步骤

    在pycharm中运行js文件以及附加node.js下载步骤

    js文件需要用node来运行,所以首先要安装node软件,下面这篇文章主要给大家介绍了关于在pycharm中运行js文件以及附加node.js下载步骤的相关资料,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2023-12-12
  • Python实现备份文件实例

    Python实现备份文件实例

    这篇文章主要介绍了Python实现备份文件的方法,可实现针对各类常见扩展名的文件进行备份的功能,需要的朋友可以参考下
    2014-09-09
  • python实践项目之监控当前联网状态详情

    python实践项目之监控当前联网状态详情

    介绍一个利用Python监控当前联网状态情况的python代码,它可以清楚地知道,你的电脑网络是否是链接成功或失败,下面小编带大家来一起学习它
    2019-05-05
  • pycharm下查看python的变量类型和变量内容的方法

    pycharm下查看python的变量类型和变量内容的方法

    今天小编就为大家分享一篇pycharm下查看python的变量类型和变量内容的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-06-06
  • 利用Pygame制作简单动画的示例详解

    利用Pygame制作简单动画的示例详解

    Pygame是被设计用来写游戏的python模块集合,Pygame是在优秀的SDL库之上开发的功能性包。本文将利用Pygame制作简易的动画,感兴趣的可以学习一下
    2022-05-05
  • 一文掌握Python爬虫XPath语法

    一文掌握Python爬虫XPath语法

    这篇文章主要介绍了一文掌握Python爬虫XPath语法,xpath是一门在XML和HTML文档中查找信息的语言,可用来在XML和HTML文档中对元素和属性进行遍历,XPath 通过使用路径表达式来选取 XML 文档中的节点或者节点集。下面会更学习的介绍,需要的朋友可以参考一下
    2021-11-11

最新评论