Python的findall()和xml

除了正则可以使用findall(), ElementTree也使用findall()

字符串对象只能使用find()

>>>xml_str="""
<a>
    <b>1</b>
    <b>2</b>
    <c>
        <d>
            <b>3</b>
            <b>4</b>
        </d>
        <e>
            <b>5</b>
            <b>6</b>
        </e>
    </c>
</a>
"""

>>> tag=xml.etree.ElementTree.fromstring(xml_str)
>>> find_tag=tag.findall("a")
>>> print find_tag
[]
/****当前节点和非当前节点的子节点(如d)直接搜索不到*****/

>>> find_tag=tag.findall("*") /**找出所有一级子节点**/
>>> print find_tag
[<Element 'b' at 0x20c77b0>, <Element 'b' at 0x20c7830>, <Element 'c' at 0x20c7850>]

>>> find_tag=tag.findall("b") /**找出一级子节点b**/
>>> print find_tag
[<Element 'b' at 0x20c77b0>, <Element 'b' at 0x20c7830>]
>>> for item in find_tag:
 print item,item.text

<Element 'b' at 0x20c77b0> 1
<Element 'b' at 0x20c7830> 2

>>> find_tag=tag.findall(".//b") /**找出所有子节点b**/
>>> find_tag=tag.findall("d") /**找出节点d**/
>>> print find_tag
[]
/***想要找到节点d,需要如下写出路径,不包括当前节点***/
>>> find_tag=tag.findall("c/d")/***找出节点d***/
>>> tag_c=tag.find(".//c")
>>> find_tag=tag_c.findall(".//b") /**从c的节点开始找b**/
>>> find_tag=tag_c.findall("*//b") /**从b的上一级节点即c和d开始找b**/
>>> find_tag=tag_c.findall("d/b") /**从c下的d开始找b**/

find()和findall()
findall("*") findall("*//")和findall(".//")

转载于:https://www.cnblogs.com/20120810bubu/archive/2013/03/27/2917268.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值