WEB开发网
开发学院软件开发Python 可爱的 Python: 重温 Python 的 XML 工具 阅读

可爱的 Python: 重温 Python 的 XML 工具

 2007-03-29 12:03:45 来源:WEB开发网   
核心提示: SAX (XML 的简单 API)是 XML 语法分析器的公用语法分析器接口,它允许应用程序作者编写使用 XML 语法分析器的应用程序,可爱的 Python: 重温 Python 的 XML 工具(4),但是它却独立于所使用的语法分析器,(将它看作 XML 的 JDBC,必须定义 4 个
SAX (XML 的简单 API)是 XML 语法分析器的公用语法分析器接口。它允许应用程序作者编写使用 XML 语法分析器的应用程序,但是它却独立于所使用的语法分析器。(将它看作 XML 的 JDBC。)(Lars Marius Garshol,SAX for Python)

SAX -- 如同它提供的语法分析器模块的 API -- 基本上是一个 XML 文档的顺序处理器。使用它的方法与 xmllib 示例极其相似,但更加抽象。应用程序员将定义一个 handler 类,而不是语法分析器类,该 handler 类能注册到任何所使用的语法分析器中。必须定义 4 个 SAX 接口(每个接口都有几个方法):DocumentHandler、DTDHandler、EntityResolver 和 ErrorHandler。创建语法分析器除非被覆盖,否则它还连接默认接口。这些代码执行与 xmllib 示例相同的任务:

清单 3: try_sax.py

"Simple SAX example, updated for Python 2.0+"    
import
     string    
import
     xml.sax    
from
     xml.sax.handler    
import
     *    
class
                                  
     QuotationHandler
                (ContentHandler):
  """Crude extractor for quotations.dtd compliant XML document"""
     __init__
                (self):
    self.in_quote = 0
    self.thisquote = ''
     startDocument
                (self):              
     print
     '--- Begin Document ---'
     startElement
                (self, name, attrs):              
     if
     name == 'quotation':
     print
     'QUOTATION:'
      self.in_quote = 1              
     else:    
      self.thisquote = self.thisquote + '{'
     endElement
                (self, name):              
     if
     name == 'quotation':
     print
     string.join(string.split(self.thisquote[:230]))+'...',
     print
     '('+str(len(self.thisquote))+' bytes)
'
      self.thisquote = ''
      self.in_quote = 0              
     else:    
      self.thisquote = self.thisquote + '}'
     characters
                (self, ch):              
     if
     self.in_quote:
      self.thisquote = self.thisquote + ch    
if
     __name__ == '__main__':
  parser = xml.sax.make_parser()
  handler = QuotationHandler()
  parser.setContentHandler(handler)
  parser.parse("sample.xml")

上一页  1 2 3 4 5 6  下一页

Tags:可爱 Python 重温

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接