首先这是我们要读取的XML文件
<?xml version="1.0" encoding="utf-8" ?>
<info>
<base>
<platform>windows</platform>
<browser>Chorm</browser>
<url>http://www.baidu.com</url>
<login username="admin" passwd="1234"/>
<login username="guest" passwd="2342"/>
</base>
<test>
<province>北京</province>
<province>上海</province>
<city>西安</city>
<city>成都</city>
</test>
1.获取标签信息
首先要导入xml的mindom模块,用来处理xml文件,parse()用于打开XML文件。documentE;ement用于得到XML文件的唯一根元素
#coding=utf-8
from xml.dom import minidom
#打开xml文件
date = minidom.parse('info.xml')
#得到文档的对象
root = date.documentElement
#打印节点名称
print root.nodeName
#打印节点值
print root.nodeValue
#打印节点类型
print root.nodeType
print root.ELEMENT_NODE
2.获得任意标签名
#coding=utf-8
from xml.dom import minidom
#打开xml文件
date = minidom.parse('info.xml')
#得到文档的对象
root = date.documentElement
#获取标签名为browser的一组标签
tagname = root.getElementsByTagName('browser')
#打印标签名
print tagname[0].tagName
tagname = root.getElementsByTagName('login')
print tagname[1].tagName
tagname = root.getElementsByTagName('province')
print tagname[1].tagName
3.获得标签的属性值
#coding=utf-8
from xml.dom import minidom
#打开xml文件
date = minidom.parse('info.xml')
#得到文档的对象
root = date.documentElement
#获取标签名为login的一组标签
logins = root.getElementsByTagName('login')
#获取login下第一个username属性值
username = logins[0].getAttribute("username")
print username
#获取login下第一个passwd属性值
passwd = logins[0].getAttribute("passwd")
print passwd
#获取login下第二个username属性值
username = logins[1].getAttribute("username")
print username
#获取login下第二个passwd属性值
passwd = logins[1].getAttribute("passwd")
print passwd
4.获取标签对之间的数据
#coding=utf-8
from xml.dom import minidom
#打开xml文件
date = minidom.parse('info.xml')
#得到文档的对象
root = date.documentElement
#获取标签名为province的一组标签
provinces = root.getElementsByTagName('province')
citys = root.getElementsByTagName('city')
#获取第二个province标签对的值,firstChild返回被选节点的第一个子节点,data表示获取该节点的数据
p2 = provinces[1].firstChild.data
print p2
#获取第一个city标签对的值
c1 = citys[0].firstChild.data
print c1
#获取第二个city标签对的值
c2 = citys[1].firstChild.data
print c2
python 读取xml文件内容并完成修改
import os
import xml.etree.ElementTree as ET
def changesku(inputpath):
listdir = os.listdir(inputpath)
for file in listdir:
if file.endswith('xml'):
file = os.path.join(inputpath,file)
tree = ET.parse(file)
root = tree.getroot()
for object1 in root.findall('object'): #我要修改的元素在object里面,所以需要先找到object
for sku in object1.findall('name'): #查找想要修改的所有同种元素
if (sku.text == '005'): #‘005’为原始的text
sku.text = '008' #修改‘name’的标签值
tree.write(file,encoding='utf-8') #写进原始的xml文件,不然修改就无效,‘encoding = “utf - 8”’避免原始xml #中文字符乱码
else:
pass
else:
pass
if __name__ == '__main__':
inputpath = 'D:\easy\hebing_xml' #这是xml文件的文件夹的绝对地址
changesku(inputpath)