使用python3.4解析xml文件(sax、dom、etree)详解编程语言

调用sax模块处理xml文件。

#重载了三个方法 
#处理xml,主要就是写自己的事件处理类 
 
from xml.sax import * 
 
class DengHandler(ContentHandler): 
    def startDocument(self): 
        print("----开始解析xml文档----") 
    def endDocument(self): 
        print("----xml文档解析完毕----") 
    def startElement(self,name,attrs): 
        if name == "author": 
            print("名字:",attrs['name']," 日期:",attrs["birth"]) 
 
parse("deng.xml",DengHandler()) 
        

deng.xml

<?xml version = "1.0" encoding = "utf-8"?> 
	<author name = "dengjingdong" birth = "19920517"></author> 
</people>

调用dom模块中的minidom处理xml文件。

from xml.dom.minidom import * 
#scannode函数打印xml文件的结构 
def scannode(doc,level = 0): 
    ret = doc.__class__.__name__ 
    if doc.nodeType == Node.ELEMENT_NODE: 
        ret += ",标签:" + doc.tagName 
    print(" "*4*level,ret) 
    if doc.hasChildNodes: 
        for child in doc.childNodes: 
            scannode(child,level+1) 
#----scannode----- 
xin = parse("book.xml") 
print(xin) 
scannode(xin) 
#----scannode----- 
 
x = parse("domtest.xml") 
nx = x.getElementsByTagName("author") 
 
print(nx[0].getAttribute("birth")) 
print(nx[0].childNodes[0].data) 
 
print(nx[1].getAttribute("birth")) 
print(nx[1].childNodes[0].data)

book.xml

<?xml version = "1.0" encoding = "utf-8" ?> 
<book> 
	<title>the book title</title> 
	<author> 
		<name>jingdong</name> 
		<boy>true</boy> 
	</author> 
	<chapter number = "1"> 
		<title> first chapter </title> 
		<para> 
			I love python. 
		</para> 
	</chapter> 
</book>

domtest.xml

<?xml version = "1.0" encoding = "utf-8" ?> 
<people> 
	<author name = "dengjingdong" birth = "1990517">dongdong</author> 
	<author name = "wushengnan" birth = "19920520">nannan</author> 
</people>

调用etree模块中的ElementTree生成所需的xml文件。

import xml.etree.ElementTree as et 
x = et.Element("name") 
x.text = "dengjingdong" 
x.set("boy","true") 
sx = et.tostring(x) 
print(sx) 

原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/8391.html

(0)
上一篇 2021年7月18日
下一篇 2021年7月18日

相关推荐

发表回复

登录后才能评论