上文对基于PyQt对XML文件进行保存和加载进行说明,本文则是通过python标准库xml dom讲数据写入到xml文件然后解析,解析XML文件则通过两种方式:DOM和SAX。两者的区别是前者适合编辑文档结构,后者采用递归工作方式,适用于XML文档的搜索和处理。
下例通过XML DOM将不同类型的数据保存为XML格式如下:
<MOVIES VERSION="1.0"><MOVIE YEAR="1989" MINUTES="45" ACQUIRED="2017-01-15"><TITLE>God save world</TITLE><NOTES>
HELLO WORLD
</NOTES></MOVIE></MOVIES>
然后通过python标准库,DOM和SAX方式讲内容解析出来。
from xml.sax import *
from xml.dom.minidom import Document,parse
import xml.dom.minidom
import os
import datetime
class Movie(object):
UNKNOWNYEAR = 1890
UNKNOWNMINUTES = 0
def __init__(self, title=None, year=UNKNOWNYEAR,
minutes=UNKNOWNMINUTES, acquired=None, notes=None):
self.title = title
self.year = year
self.minutes = minutes
self.acquired = (acquired if acquired is not None
else datetime.date.today())
self.notes = notes
class MovieContainer(object):
def __init__(self,fname,movies):
self.__fname = fname
self.__movies = movies
def