xml使用<xml.etree.ElementTree>操作数据
- 读取xml字符串
网上大多教程是从文本中读取,我这里只是需要处理xml字符串,因此直接在代码中加载,如下:
try:
import xml.etree.cElementTree as ET
except ImportError:
import xml.etree.ElementTree as ET
content = '''<?xml version="1.0" encoding="GBK"?>
<request>
<head>
<name>测试</name>
<age>22</age>
<sex></sex>
</head>
<body>
<happy>哈哈</happy>
<time>666</time>
</body>
</request>'''
- 加载字符串
在此处遇到一问题,就是因为xml头部是gbk格式,因此加载报错,此处先暂时替换掉了GBK为utf-8
content = content.replace('GBK', 'utf-8').replace('gbk', 'utf-8')
tree = ET.fromstring(content)
print tree # 打印root节点元素
print tree.find('body') # 打印<request>下的body节点
name = tree[0].find('name') # 获取head节点下的name节点
name.text = 'This is a test' # 修改name节点的名字
print tree[1] # 打印<request>下的第二个节点,也就是body节点
tree.remove(tree[0]) # 移除request下标的第一个节点,即head
print tree.tag
print tree[0].tag
print tree[0].text
e = ET.Element('spam')
e.text = 'This is a test'
tree.insert(1, e) # 此处新增元素加在哪里,只需要将tree替换成需要添加的元素节点
print ET.tostring(tree) # tree是打印的全部xml字符串,换成对应的节点,可以打印当前节点下的数据。PS:此处不带xml头部,最后需要手动添加
网友评论