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

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

 2007-03-29 12:03:45 来源:WEB开发网   
核心提示: 模块:xmllibxmllib 是一个非验证的低级语法分析器,应用程序员使用的 xmllib 可以覆盖 XMLParser 类,可爱的 Python: 重温 Python 的 XML 工具(2),并提供处理文档元素(如特定或类属标记,或字符实体)的方法,经过分析的文本作为连续流来处理,所使

模块:xmllib

xmllib 是一个非验证的低级语法分析器。应用程序员使用的 xmllib 可以覆盖 XMLParser 类,并提供处理文档元素(如特定或类属标记,或字符实体)的方法。从 Python 1.5x 到 Python 2.0+ 以来, xmllib 的使用方法并没变化;在绝大多数情况下更好的选择是使用 SAX 技术,它也是种面向流的技术,对语言和开发者来说更为标准。

本文中的示例与原来专栏中的相同:包括一个叫做 quotations.dtd 的 DTD 以及这个 DTD 的文档 sample.xml (请参阅 参考资料,以获取本文中提到的文件的档案)。以下的代码显示了 sample.xml 中每段引言的前几行,并生成了非常简单的未知标记和实体的 ASCII 指示符。经过分析的文本作为连续流来处理,所使用的任何累加器都由程序员负责(如标记中的字符串 (#PCDATA),或所遇到的标记的列表或词典)。

清单 1: try_xmllib.pyimport
     xmllib, string    
class
                                  
     QuotationParser
    (xmllib.XMLParser):
  """Crude xmllib extractor for quotations.dtd document"""
     __init__
    (self):
    xmllib.XMLParser.__init__(self)
    self.thisquote = ''          # quotation accumulator     
     def
                                  
     handle_data
    (self, data):
    self.thisquote = self.thisquote + data
     syntax_error
    (self, message):              
     pass
  def
                                  
     start_quotations
    (self, attrs):     # top level tag
              print
     '--- Begin Document ---'
     start_quotation
    (self, attrs):              
     print
     'QUOTATION:'
     end_quotation
    (self):              
     print
     string.join(string.split(self.thisquote[:230]))+'...',              
     print
     '('+str(len(self.thisquote))+' bytes)
'
    self.thisquote = ''
     unknown_starttag
    (self, tag, attrs):
    self.thisquote = self.thisquote + '{'
     unknown_endtag
    (self, tag):
    self.thisquote = self.thisquote + '}'
     unknown_charref
    (self, ref):
    self.thisquote = self.thisquote + '?'
     unknown_entityref
    (self, ref):
    self.thisquote = self.thisquote + '#'    
if
     __name__ == '__main__':
  parser = QuotationParser()
      
for
     c    
in
     open("sample.xml").read():
    parser.feed(c)
  parser.close()

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

Tags:可爱 Python 重温

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