可爱的Python:将XML和Python结合起来

开始在 Python 中使用 XML 的一个主要要素是排列出所有可用模块的可比性能力。在他的新 Python 专栏“可爱的 Python”的第一部分中,David Mertz 简要描述了最流行和实用的关于 XML 的 Python 模块,并指出可以下载的单独模块以及可供阅读的参考资料。本文有助于确定哪些模块最适合特定任务。

在许多情况下,Python 是使用 XML 文档的理想语言。像 Perl、REBOL、REXX 和 TCL 一样,它是一种灵活的脚本语言,并且有强大的文本操作能力。而且,XML 文档除了编码大多数类型的文本文件(或流文件),通常还编码大量复杂的数据结构。文本处理中常见的“读取几行,并将它们与一些规则表达式比较”样式通常不能很好地适合对 XML 进行彻底语法分析和处理。幸好,Python(与大多数其它语言相比)不仅有直接处理复杂数据结构的方法(通常使用类和属性),还有许多 XML 相关的模块可以帮助语法分析、处理和生成 XML。

关于 XML,要记住一个总体概念:可以验证或非验证方式处理 XML 文档。在以前的处理类型中,读取 XML 文档之前,必须先读取“文档类型定义”(DTD)。这种情况下,处理将总体计算 XML 文档的简单句型规则,还将计算 DTD 的特定语法约束。大多数情况下,使用非验证处理就可以了(通常运行更快,更适合程序) -- 我们相信文档创建者遵循文档范围的规则。在下面讨论的大多数模块都是非验证型;如果存在验证选项,则描述将指出。

中心资源库 (Vaults of Parnassus)(请参阅 参考资料)最近已成为查找 Python 资源的标准方法。可以在那个站点上找到所有以下讨论的模块(通过链接到各自模块所有者的站点)。特别地,可以在资源库中找到 PyXML 发行版,它是 tar 文件和 Win32 形式的安装程序。

Python 的 XML 特殊兴趣组 (XML-SIG)

XML-SIG 的成员执行了许多 -- 或大部分 -- 维护 Python 一部分 XML 工具的任务。与其它 Python SIG 一样,XML-SIG 要维护邮件发送列表、列表档案、有用的参考大权、文档、标准包和其它资源。阅读了本文中的概述后,最好从 XML-SIG Web 页面入手。

根据本文中讲述的特定重点,XML-SIG 维护了 PyXML 发行版。这个包包含了许多本文中讨论的模块,一些“入门”文档,一些演示代码和其它一些 XML-SIG 决定放入该发行版的东西。给定的包也许不会总是包含每个独立模块或工具的最新版本,但下载 PyXML 发行版是个好主意。以后,可以随时添加任何未包含的模块,或者已包含模块的新版本(以及许多 PyXML 发行版提供的服务所未包含的模块)。

模块:XMLLIB 模块(标准)

“不包括在标准发行版中”,Python 1.5.* 带有模块 [xmllib]。Python 1.6 也许结合了更多 XML-SIG 的成就,但它仍是测试版。[xmllib] 是一个非验证的低级语法分析器。[xmllib] 的工作方式是用应用程序覆盖 XMLParser 类,并提供处理文档元素(如特定或类属标记,或字符实体)的方法。

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

尝试 xmllib 的代码

#-------------------- try_xmllib.py --------------------#
      import xmllib, string
      class QuotationParser(xmllib.XMLParser):
          """Crude xmllib extractor for quotations.dtd document"""
          def __init__(self):
              xmllib.XMLParser.__init__(self)
              self.thisquote = ''             # quotation accumulator
          def handle_data(self, data):
              self.thisquote = self.thisquote + data
          def syntax_error(self, message): pass
          def start_quotations(self, attrs):  # top level tag
              print '--- Begin Document ---'
          def start_quotation(self, attrs):
                  print 'QUOTATION:'
          def end_quotation(self):
                  print string.join(string.split(self.thisquote[:230]))+'...',
                  print '('+str(len(self.thisquote))+' bytes)\n'
                  self.thisquote = ''
          def unknown_starttag(self, tag, attrs):
                  self.thisquote = self.thisquote + '{'
          def unknown_endtag(self, tag):
                  self.thisquote = self.thisquote + '}'
          def unknown_charref(self, ref):
              self.thisquote = self.thisquote + '?'
          def 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()

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索xml
, python
, 文档
, 模块
, 处理
, python 包 模块
, Self
, python模块
python文件处理
,以便于您获取更多的相关知识。

时间: 2024-09-13 02:45:18

可爱的Python:将XML和Python结合起来的相关文章

Python创建xml的方法_python

本文实例讲述了Python创建xml的方法.分享给大家供大家参考.具体实现方法如下: from xml.dom.minidom import Document class write_xml(Document): def __init__(self): Document.__init__(self) def set_tag(self,tag): self.tag = tag self.tag1 = self.createElement(self.tag) self.appendChild(sel

python写xml文件的操作实例_python

本文实例讲述了python写xml文件的操作的方法,分享给大家供大家参考.具体方法如下: 要生成的xml文件格式如下: <?xml version="1.0" ?> <!--Simple xml document__chapter 8--> <book> <title> sample xml thing </title> <author> <name> <first> ma </fir

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

David Mertz 创作的 可爱的 Python的第一.第二部分概述了在 Python 中使用XML.然而,在那些最初的文章出现后,Python 中的 XML工具有了很大的发展.不幸的是,这些改进中的大多数并不向后兼容.在这个特别部分中,重温了作者先前对XML 工具的讨论,并提供最新的代码示例. 在许多情况下,Python 是使用 XML 文档的理想语言.像 Perl.REBOL.REXX 和 TCL 一样,它是一种灵活的脚本语言,并且有强大的文本操作能力.而且,除了对多数类型的文本文件(或

XML,Python,在ASP中到底有什么优势?

xml 最近做一个ASP的东西,想着多学习一些新的技术.最冲动的就是想使用XML以及Python,Ruby这样的脚本语言. 关于XML: xml提供数据,最大的好处是跨平台,如果用txt文件作为数据,则在数据量少的时候速度很快,数据量大的时候速度则快速下降.用数据库提供数据在速度上是最好的,但是移植性和跨平台不是最好,最重要的是增加了很大的成本(商业上不能用盗版的).对于硬件的要求也提高了.     如果空间不支持数据库,那么只好用xml了. 和txt文件相比,xml增加了结构,操作起来方便多了

xml转换(Python)

xml|转换 前些天用python处理xml的转换的一个小程序,用来把xml,xsl转换成html. 用的libxml2,所以还要先安装了libxml2模块才能使用. # -*- coding: mbcs -*- #!/usr/bin/python import libxml2, libxslt class compoundXML:     def __init__(self):         self._result = None         self._xsl = None      

可爱的Python:更新您的Python读物列表,第3部分

Python 书籍已经开始稳步占据着书店书架空间的更大份额.自从我开始发表这些综述以来,现可称为"废品"的有关 Python 的书籍数量可能已经是原来的四倍.而这还不包括许多在 Web 上发布的有关 Python 的出色的电子文档(包括一些未经删节的书籍).本文谈及的几本 Python 书籍已在前几个月就放到了我的书架上. 与 Web 相关的书籍 关于 Python 和 Web 的两本书 我最近看到两本书:Holden 和 Beazley 合著的 Python Web Programm

python解析xml文件实例分析

  本文实例讲述了python解析xml文件的方法.分享给大家供大家参考.具体如下: python解析xml非常方便.在dive into python中也有讲解. 如果xml的结构如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 <?xml version="1.0" encoding="utf-8"?> <books> <book> <author>zoer</a

python写入xml文件的方法

  这篇文章主要介绍了python写入xml文件的方法,涉及Python操作XML模块实现针对XML文件操作的相关技巧,需要的朋友可以参考下 本范例通过xml模块对xml文件进行写入操作 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 from xml.dom.minidom import Document doc = Document() people = doc.createElement("people") doc.appendChild(people) a

Python解析xml中dom元素的方法_python

本文实例讲述了Python解析xml中dom元素的方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: from xml.dom import minidom try:     xmlfile = open("path.xml", "a+")     #xmldoc = minidom.parse( sys.argv[1])     xmldoc = minidom.parse(xmlfile) except :     #updatelogger.