Your Ad Here
首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 编程语言 > 其他编程语言 > Python使用SAX解析xml
【标  题】:Python使用SAX解析xml
【关键字】:Python,SAX,xml
【来  源】:http://www.cublog.cn/u/19228/showart.php?id=126340

Python使用SAX解析xml

Your Ad Here import sys, string
from xml.sax import handler, make_parser
class MySaxDocumentHandler(handler.ContentHandler):             # [1]
    def __init__(self, outfile):                                # [2]
        self.outfile = outfile
        self.level = 0
        self.inInterest = 0
        self.interestData = []
        self.interestList = []
    def get_interestList(self):
        return self.interestList
    def set_interestList(self, interestList):
        self.interestList = interestList
    def startDocument(self):                                    # [3]
        print "--------  Document Start --------"
    def endDocument(self):                                      # [4]
        print "--------  Document End --------"
    def startElement(self, name, attrs):                        # [5]
        self.level += 1
        self.printLevel()
        self.outfile.write('Element: %s\n' % name)
        self.level += 2
        for attrName in attrs.keys():                           # [6]
            self.printLevel()
            self.outfile.write('Attribute -- Name: %s  Value: %s\n' % \
                (attrName, attrs.get(attrName)))
        self.level -= 2
        if name == 'interest':
            self.inInterest = 1
            self.interestData = []
    def endElement(self, name):                                 # [7]
        if name == 'interest':
            self.inInterest = 0
            interest = string.join(self.interestData)
            self.printLevel()
            self.outfile.write('Interest: ')
            self.outfile.write(interest)
            self.outfile.write('\n')
            self.interestList.append(interest)
        self.level -= 1
    def characters(self, chrs):                                 # [8]
        if self.inInterest:
            self.interestData.append(chrs)
    def printLevel(self):                                       # [9]
        for idx in range(self.level):
            self.outfile.write('  ')
def test(inFileName):
    outFile = sys.stdout
    # Create an instance of the Handler.
    handler = MySaxDocumentHandler(outFile)
    # Create an instance of the parser.
    parser = make_parser()
    # Set the content handler.
    parser.setContentHandler(handler)
    inFile = open(inFileName, 'r')
    # Start the parse.
    parser.parse(inFile)                                        # [10]
    # Alternatively, we could directly pass in the file name.
    #parser.parse(inFileName)
    inFile.close()
    # Print out a list of interests.
    interestList = handler.get_interestList()
    print 'Interests:'
    for interest in interestList:
        print '    %s' % (interest, )
def main():
    args = sys.argv[1:]
    if len(args) != 1:
        print 'usage: python test.py infile.xml'
        sys.exit(-1)
    test(args[0])
if __name__ == '__main__':
    main()
windows IIS上配置PHP支持:【上一篇】
python禅宗:【下一篇】
【相关文章】
  • Python生成Zip压缩文件
  • 使用 SQLXML 数据类型
  • XML 2 Class [xml 转化为 序列化代码工具]
  • Python学习笔记1:为什么选择Python!
  • python学习笔记2:运行起来
  • python基础
  • QuickServer开发指南(8)- XML配置
  • xml ,xsl,css 页面开发技术样例
  • onreadystatechange 事件获取XMLHTTP请求的当前状态
  • 并非万能的XML
  • 【随机文章】
  • 测试:你能成为超级富豪吗?
  • 2005Intel笔试面试题
  • C#串口通信编程实例
  • 把NT 4.0下的ASP应用迁移到Windows 2000上(1.2)
  • DataList中嵌套DataList的例子
  • 关于路由的基础知识-路由算法
  • 供应商关系管理SRM系列谈——之五
  • 使用Eclipse RCP进行桌面程序开发(六):向OpenGL进军
  • 文档之vsftp配置大全 2
  • 关于xmlhttp的一点摸索
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 bbb软讯网络 All Rigths Reserved.