将 XML 文档作为对象的“Python 化”处理 (II)
2007-03-30 12:26:26 来源:WEB开发网向前一步:如何使用xml_objectify
使用 xml_objectify 很简单,而且在模块 docstring注释中有详细记载。让我们快速浏览一下一些样本代码:
从 XML 文档创建 Python对象 from
xml_objectify
import
XML_Objectify
xml_obj = XML_Objectify(
'address.xml')
py_obj = xml_obj.make_instance()
如您所见,从常规 XML 文档创建本机 Python对象有两个步骤。首先创建一个类似于 DOM的中间工厂对象(即用于创建其它对象的对象)。然后,从 XML_Objectify 实例中生成一个或多个 Python对象实例。请注意,应该使用 xml_pickler 来处理特殊的 PyObjects.dtd 格式文档。(请参阅 XML 问题 #1了解有关 xml_pickle 的信息。)
也可以在同一行上执行这两步。例如:
在一行中创建 XML/Python 对象
py_obj = XML_Objectify(
'address.xml').make_instance()
当然,在后一种情况中,不保留工厂对象来产生更多本机对象,而且也将清除包含它的完整DOM 实例的 ._dom 数据成员。
为进行比较,下例显示了使用 Python 创建 DOM 对象有多简单:
从 XML 文档创建 DOM 对象
from xml.dom.utils import FileReader
dom_obj =
FileReader().readXml(open('address.xml'))
FileReader().readXml() 需要实际的文件对象,而 XML_Objectify() 可以接受文件对象或者普通文件名。在这两种情况下,创建对象是一个两行的操作。
使用 xml_objectify 模块和 xml.dom 软件包的不同之处在于最后得到的对象类型。Python DOM 对象是真正的Python 对象,但它的属性和方法与原始 XML文档的数据和结构对应程度并不象 XML_Objectify 对象那样接近。Python DOM 对象的属性通常嵌套了 .children 列表,这些列表在语义上并没有什么太大的帮助。要访问样本文档中同一个XML 属性,可以使用 xml_objectify 的第一行,也可以使用DOM 的以下四行。下面显示了这四行:
更多精彩
赞助商链接