python操作xml

本文介绍了如何使用Python的minidom模块从info.xml文件中提取节点信息,包括获取标签名称、属性值,以及通过getElementsByTagName方法遍历标签。重点展示了如何通过getAttribute方法获取属性值和通过firstChild/data获取文本内容。
摘要由CSDN通过智能技术生成

获取标签值
首先导入xml的minidom模块,用来处理xml文件,parse()用于打开一个xml文件,documentElement用于得到xml文件的唯一根元素
每一个节点都有它的nodeName、nodeValue、nodeType等属性。

nodeName为节点名称
nodeValue为节点的值,只对文本节点有效
nodeType为节点的类型
<?xml version="1.0" encoding:"utf-8"?>
<info>
    <base>
        <platform>windows</platform>
        <browser>Firefox</browser>
        <url>http://www.baidu.com</url>
            <login username="admin" password="123456"/>
            <login username="guest" password="654321"/>
    </base>
    <test>
        <province>北京</province>
        <province>广东</province>
            <city>深圳</city>
            <city>珠海</city>
        <province>浙江</province>
            <city>杭州</city>
    </test>
</info>

下面以info.xml文件为例介绍读取xml文件的方法

获取标签信息
from xml.dom import minidom

dom = minidom.parse('info..xml')   #打开xml文档
root = dom.documentElement    #得到文档元素对象
print(root.nodeName)
print(root.nodeValue)
print(root.nodeType)
print(root.ELEMENT_NODE)

运行结果:
info
None
1
1
#获得任意标签名
from xml.dom import minidom

dom = minidom.parse('info.xml')   #打开xml文档
root = dom.documentElement   #得到文档元素对象
tagname = root.getElementsByTagName('browser')
print(tagname[0].tagName)
tagname = root.getElementsByTagName('login')
print(tagname[1].tagName)
tagname = root.getElementsByTagName('province')
print(tagname[2].tagName)

运行结果:
browser
login
province

getElementsByTagName()可以通过标签名获取标签,它所获得的对象是以数组形式存放。假如“login”和“province”标签在info.xml文件中有多个,则可以通过指定数组下标的方式获取某个具体标签

getElementsByTagName('province')获得的是标签名为“province”的一组标签
getElementsByTagName('province').tagname[0]表示一组标签中的第一个
getElementsByTagName('province').tagname[2]表示一组标签中的第三个
#获得标签的属性值
#getAttribute()方法用于获取元素的属性值,他和webdriver中提供的get_attribute()方法相似
from xml.dom import minidom

dom = minidom.parse('info.xml')   #打开xml文档
root = dom.documentElement        #得到文档元素对象
logins = root.getElementsByTagName('login')   #获得login标签的username属性值
username = logins[0].getAttribute("username")
print(username)
password = logins[0].getAttribute("password")  #获得login标签的password属性值
print(password)
username = logins[1].getAttribute("username")   #获得第二个login标签的username属性值
print(username)
password = logins[1].getAttribute("password")   #获得第二个login标签的password属性值
print(username)

运行结果:
admin
123456
guest
654321
#获得标签对之间的数据
#firstChild属性返回被选节点的第一个子节点,data表示获取该节点的数据,他和webdriver中提供的text方法类似
from xml.dom import minidom

dom = minidom.parse('info.xml')   #打开xml文档
root = dom.documentElement        #得到文档元素对象
provinces = dom.getElementsByTagName('province')
citys = dom.getElementsByTagName('city')
p2 = provinces[1].firstChild.data   #获得第二个province标签对的值
print(p2)
c1 = citys[0].firstChild.data       #获得第一个city标签对的值
print(c1)
c2 = citys[1].firstChild.data       #获得第二个city标签对的值
print(c2)

返回结果:
广东
深圳
珠海
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值