python3 XML.解析方法 18.01.16

本文介绍了Python3中处理XML的DOM和SAX解析方法,包括使用parse加载XML文件,fromstring从字符串加载,findall和find获取指定节点,getchildren获取子节点,以及gettiterator遍历所有节点。
摘要由CSDN通过智能技术生成

DOM解析案例:

from xml.dom.minidom import parse
#得到整个DOM文档树
doc=parse("persons.xml")
#得到根节点
root=doc.documentElement
persons=root.getElementsByTagName("person")
for p in persons:
    print(p.getElementsByTagName("name")[0].childNodes[0].data,end=" ")
    print(p.getElementsByTagName("age")[0].childNodes[0].data,end=" ")
    print(p.getElementsByTagName("sex")[0].childNodes[0].data)

sax解析案例:

from xml.sax import ContentHandler
from xml.sax import parse
class xixi(ContentHandler):
    def __init__(self,):
        self.tag=""
        self.name=""
        self.age=""
        self.sex=""
    def startElement(self, name, attrs):
        self.tag=name
    def characters(self, content):
        if self.tag=="bname":
            self.name=content
        if self.tag=="price":
            self.age=content
        if self.tag=="author":
            self.sex=content
    def endElement(self, name):
        if self.tag=="bname":
            print(self.name,end="\t")
        if self.tag=="price":
            print(self.age,end="\t")
        if self.tag=="author":
            print(self.sex)
        self.tag=""
baibai=xixi()
parse("ben.xml",baibai)
try解析案例:

方法                                     作用

parse(xmlfile)                       加载XML文件

frommstring(xmltext)            加载XML文件

findall()                                 获取指定的所有节点

find()                                     获取指定的节点

getchildren()                         获取儿子节点

gettiterator()                          获取指定所有节点,与findall()类似

from xml.etree.cElementTree import *
root=parse("persons.xml")
persons=root.findall("person")
for p in persons:
    print(p.find("name").text,end=" ")
    print(p.find("age").text,end=" ")
    print(p.find("sex").text)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值