python xml 解析_python xml解析实例详解

python xml解析

first.xml

1

fsy

24

2

jianjian

24

1000

from xml.etree import ElementTree as etree

读入

def read_xml(file):

# parse()函数会返回一个能代表整篇文档的对象。这不是根元素。要获得根元素的引用可以调用getroot()方法。

tree = etree.parse(file)

root = tree.getroot()

return root

得到信息

def print_node(node):

'''''打印结点基本信息'''

print("node.tag:%s" % node.tag)

print("node.attrib:%s"%node.attrib)

print( "node.text:%s" % node.text)

搜索:

find_all

>>> root = read_xml ('first.xml')

>>> res = root.findall("person")

[, ]

注意:findall只查询直接的子节点

>>> r1 = root.findall("id")

>>> r1

[]

>>> r =tree.findall(".//id")

>>> for e in r:

print( e,e.text)

1

2

find:

#find()方法用来返回第一个匹配到的元素。当我们认为只会有一个匹配,或者有多个匹配但我们只关心第一个的时候,这个方法是很有用的。

>>> res[0].find("id")

>>> print_node(res[0].find("id"))

node.tag:id

node.attrib:{}

node.text:1

find查找失败:

使用find要注意在布尔上下文中,如果ElementTree元素对象不包含子元素,其值则会被认为是False(即如果len(element)等于0)。这就意味着if element.find('...')并非在测试是否find()方法找到了匹配项;这条语句是在测试匹配到的元素是否包含子元素。想要测试find()方法是否返回了一个元素,则需使用if element.find('...') is not None。

>>> bk = res[0].find("no")

>>> bk

>>> type(bk)

>>> res[0].find("id")

>>> if res[0].find("id"):

print("find")

else:

print("not find")

not find

>>> if res[0].find("id") is not None:

print("find")

else:

print("not find")

find

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值