可爱的 Python:将 XML 和 Python结合起来
2007-03-29 12:03:13 来源:WEB开发网与 [xmllib] 相比,关于示例要注意两件小事:'parseFile()'/'parse()' 方法处理整个流/字符串,所以不必为语法分析器创建循环;向 'characters()' 提供了大量数据,自变量会指出数据的大小和位置以及传递的字符串。不要假设变量 'ch' 将以什么形式传送给 'characters()'。
包:DOM
DOM 是一种 XML 文档的高级树型表示。该模型并非特定于 Python,而是一种普通 XML 模型(请参阅 参考资料 以获取进一步信息)。Python 的 DOM 包是针对 SAX 构建的,并且包括在 PyXML 发行版中。由于篇幅关系,没有将代码样本加到本文中,但在 XML-SIG 的 "Python/XML HOWTO" 中给出了一个极好的总体描述。
“文档对象模型”(DOM) 为 XML 文档指定了树型表示。顶级文档实例是树的根,它只有一个子代,即顶级元素实例;这个元素有表示内容和子元素的子节点,他们也可以有子代。定义的函数允许随意遍历结果树,访问元素和属性值,插入和删除节点,以及将树转换回 XML。
DOM 可以用于修改 XML 文档,因为可以创建一棵 DOM 树,通过添加新节点和来回移动子树来修改这棵树,然后生成一个新的 XML 文档作为输出。您也可以自己构造一棵 DOM 树,然后将它转换成 XML;用这种方法生成 XML 输出比仅将 <tag1>...</tag1> 写入文件的方法更灵活。
包:Pyxie
[pyxie] 模块从 XML-SIG 构建到 PyXML 发行版之上,它为 XML 文档提供了附加的高级接口。[pyxie] 将完成两项基本操作:它将 XML 文档转换成一种更易于进行语法分析的基于行的格式;并且它提供了将 XML 文档当作可操作树处理的方法。[pyxie] 所使用的基于行的 PYX 格式是独立于语言的,其工具适用于几种语言。总之,文档的 PYX 表示与其 XML 表示相比,更易于使用常见的基于行的文本处理工具进行处理,如 grep、sed、awk、bash、perl,或标准 python 模块,如 [string] 和 [re]。根据结果,从 XML 转换到 PYX 可能节省许多工作。
[pyxie] 将 XML 文档当作树处理的概念与 DOM 中的思路相似。由于 DOM 标准得到许多编程语言的广泛支持,那么如果 XML 文档的树型表示是必需的,大多数程序员会使用 DOM 标准而非 [pyxie]。
模块:XML 语法分析器
“XML 语法分析器”这个叫法太笼统,也许还不太确切,实际上它是一种比较旧的工具,用于检查 XML 文档是否符合句法以及其结构是否完好(但对于 DTD 无效)。一个附加的实用程序类在进行检查时会产生一些小麻烦,它会让 HTML 文档通过检查(即使那些文档没有 XML 必需的结束标记)。这个模块的适用范围并不能覆盖 PyXML 发行版中的所有模块。但如果只想验证一些 XML 文档,那么设置和运行 XML 语法分析器还是很容易的。如果从命令行运行,则该模块将在 STDIN 上检查 XML 文档,甚至不用将它导入程序。这是最简单的做法。
XML_OBJECTS 0.1
如同其它高级工具,xml_objects 构建在 SAX 之上。构建 xml_objects 的目的是将 XML 文档转换成一个两维网格表示,从而更易于在关系数据库中存储。
下一步
在下一个“可爱的 Python”专栏中,我们将进一步研究 xml.dom 模块,它可能是 Python 程序员用来处理 XML 文档的功能最强大的工具。
更多精彩
赞助商链接