之前在使用xml解析的時候,在網上搜了很多教程,最終沒有能按照網上的教程實現需求。
所以呢,只好自己去看原始碼,在sax的__init__.py下看到這麼一段**:
1 def parse(source, handler, errorhandler=errorhandler()):2 parser = make_parser()
3 parser.setcontenthandler(handler)
4 parser.seterrorhandler(errorhandler)
5 parser.parse(source)
# 可以看出來,執行xml解析至少需要兩個引數:source:原始檔路徑和例項化的handler物件
下面我們就用乙個例子來是實現一下:(事先說明,這個例子是網上找的,不是自己寫的)
harry potterj k. rowling
2005
29.99
learning xml
erik t. ray
2003
39.95
下面將對各個步驟的作用逐個說明:
#!usr/bin/env python# -*- coding: utf-8 -*-
# @time : 2018/5/30 22:43
# @author : adong_chen
from xml import sax
class testhandler(sax.contenthandler): # 定義自己的handler類,繼承sax.contenthandler
def __init__(self):
sax.contenthandler.__init__(self) # 弗父類和子類都需要初始化(做一些變數的賦值操作等)
self._content = ""
self._tag = ""
def startelement(self, name, attrs): # 遇到標籤時候會執行的方法,這裡的name,attrs不用自己傳值的(這裡其實是重寫)
self._tag = name
if name == "bookstore":
print "*****====bookstore*****===="
if self._tag == "book":
print "book: " + attrs["category"]
print "--------------------------"
def endelement(self, name): # 遇到執行的方法,name不用自己傳值(重寫)
# print "endelement"
if name == "bookstore":
print "*****====bookstore*****===="
elif name == "title":
print "title: " + self._content
elif name == "author":
print "author: " + self._content
elif name == "year":
print "year: " + self._content
elif name == "price":
print "price: " + self._content
else:
pass
def characters(self, content): # 獲取標籤內容
self._content = content
if __name__ == "__main__":
handler = testhandler() # 自定義類例項化成物件
sax.parse("test2.xml", handler) # 解析xml檔案
執行結果如下:
*****====bookstore*****====book: children
--------------------------
title: harry potter
author: j k. rowling
year: 2005
price: 29.99
book: web
--------------------------
title: learning xml
author: erik t. ray
year: 2003
price: 39.95
*****====bookstore*****====
python中使用minidom處理xml
pyhton中使用xml儲存配置檔案,下面是乙個簡單的例子,實測可用。產生xml檔案部分。from xml.dom import minidom def generatexml baud,com impl minidom.getdomimplementation doc impl.createdoc...
Python3使用minidom讀寫xml檔案
python使用minidom處理xml還是比較麻煩的,網上很多資料都是斷斷續續的一部分,不成體統。這裡寫乙個demo,把常用xml解析操作 讀寫檔案 解析節點 新增節點 解析屬性 新增屬性 解析節點值和修改節點值等,都包含進來的。供各位讀者參考 demo實現的功能是從input.xml檔案中讀取x...
python3使用sax操作xml
python使用sax解析xml sax是一種基於事件驅動的api。利用sax解析xml文件牽涉到兩個部分 解析器和事件處理器。解析器負責讀取xml文件,並向事件處理器傳送事件,如元素開始跟元素結束事件 而事件處理器則負責對事件作出相應,對傳遞的xml資料進行處理。1 對大型檔案進行處理 2 只需要...