第九节
- doc=parse(filename)
- Root=doc.documentElement
- Movies=root.getElementsByTagName(“movie”)
- For movie in movies:
获取movie的每个子节点
获取子节点的值 childNodes[0].data
characters(content)方法
调用时机:
从行开始,遇到标签之前,存在字符,content的值为这些字符串。
从一个标签,遇到下一个标签之前, 存在字符,content的值为这些字符串。
从一个标签,遇到行结束符之前,存在字符,content的值为这些字符串。
标签可以是开始标签,也可以是结束标签。
startDocument()方法
文档启动的时候调用。
endDocument()方法
解析器到达文档结尾时调用。
startElement(name, attrs)方法
遇到XML开始标签时调用,name是标签的名字,attrs是标签的属性值字典。
endElement(name)方法
遇到XML结束标签时调用。
例:
from xml.sax import parse
from xml.sax import ContentHandler
class Student:
def __init__(self,name=None,age=None,sex=None):
self.name=name
self.age=age
self.sex=sex
def __str__(self):
return self.name+","+str(self.age)+self.sex
students=[]
class saxdemo(ContentHandler):
def startDocument(self,student=None):
self.student=student
def endDocument(self):
print("endDocunment...")
def startElement(self, name, attrs):
if name=='student':
self.student=Student()
print("startElement",name)
def endElement(self, name):
if name=='name':
self.student.name=self.tag
if name=='age':
self.student.age=self.tag
if name=='sex':
self.student.sex=self.tag
if name=='student':
students.append(self.student)
def characters(self, content):
self.tag=content
print("characters",content)
parse("student.xml",saxdemo())