XML和JSON的系列操作
操作XML
读取XML文件,使用parse函数
就是
from lxml import etree
tree = etree.parse('text.xml')
转化成字符串形式的XML
a = str(etree.tostring(tree,encoding='utf-8'))
分析字符串形成的XML文档
也就是使用etree.formstring(a)
操作HTML文档
HTML与XML相似,都是由若干节点组成的。但XML只有这些节点,而HTML不仅有节点,还有其任何文本。
获取根节点与某个节点的所有子节点
root = tree.getroot()
root.getchildren()
读取与搜索XML文件
在一定程度上
from xml.etree.ElementTree import parse等价于
from lxm.etree import parse
都是通过parse函数打开xml文件
然后再通过XPath语法来搜索节点
将字典转化为XML字符串
将字典转化为XML文件需要使用dicttoxml模块中的dicttoxml函数
bxml = dicttoxml.dicttoxml(d, custom_root = 'persons') # 这里传入的是字节形式,需要之后自己转码
d是传入的字典对象,custom_root = 'persons因该是在为根节点命名
用utf-8编码格式解码XML字符串
xml = bxml.decode('utf-8')
这里解析得到的xml文件并没有采用parse函数
而是使用from xml.dom.minidom import parseString模块
dom = parseString(xml)
生成带缩进格式的XML字符串
prettyxml = dom.toprettyxml(indent = ' ')
将XML转换为字典
xmltodict模块
d = xmltodict.parse(xml)
处理JSON格式的数据
JSON格式的数据可以保存数组和对象,JSON数组用一对中括号将数据括起来,JSON对象用一个大括号将数据括起来。注意:key和字符串类型的值要用双引号括起来,不呢个使用单引号
JSON字符串与字典相互转换
字典转换为JSON采用json模块的dumps函数,该函数需要将字典通过参数传入,然后返回与字典对应的JSON字符串
json_dict = json.dumps(data)
将JSON字符串转化为字典可以使用json的loads函数,该函数通过参数传入JSON字符串,然后返回与该JSON字符串对应的字典
data = json.loads(json_dict)
还可以使用eval函数将JSON格式的字符串当作普通的Python代码执行
data = eval(json_dict)
eval函数会直接返回与JSON格式字符串对应的字典。
由于eval函数可以执行任何Python代码,如果JSON字符串中包含了有害的Python代码,执行JSON字符串可能会带来风险;所以尽量使用loads,不要使用eval函数
将JSON字符串转化为类实例
loads函数不仅可以将json字符串转化为字典,还可以将其转化为类实例
转换的关键是给loads函数加一个object_hook关键字参数指定一个类或者一个回调函数
变成一个类实例的话就可以使用点(.)来直接调用json字符串中的属性。
将类实例转化为JSON字符串
dumps函数不仅可以将字典转换为一个JSON字符串,还可以将类实例转化为JSON字符串。dumps函数需要通过default关键字指定一个回调函数,在转化的过程中,dumps函数会向这个回调函数传入类实例,而回调函数是将类实例转化为字典,而dumps函数再将字典转化为JSON字符串
(但这里最好提前了解到属性名称,也就是键,才不容易转化成新的字典样子出错)
类实例列表与JSON字符串相互转换
将JSON字符串转换为XML字符
json字符串>字典>xml
loads==>dicttoxml