WEB开发网
开发学院软件开发Python 将 XML 文档作为对象的“Python 化”处理 (II) 阅读

将 XML 文档作为对象的“Python 化”处理 (II)

 2007-03-30 12:26:26 来源:WEB开发网   
核心提示: 设计注意事项、限制和告诫代码自测使用 xml_objectify ,可以利用所有现有的常规函数,将 XML 文档作为对象的“Python 化”处理 (II)(4), pyobj_printer() 是个样本常规函数,其中包括 xml_objectify 模块,例如, misc_info 对

设计注意事项、限制和告诫

代码自测

使用 xml_objectify ,可以利用所有现有的常规函数。 pyobj_printer() 是个样本常规函数,其中包括 xml_objectify 模块。该函数产生 所有Python 对象可读的递归表示。通过将 XML文档表示为本机 Python 文档,可以重用现有的、以抽象方式处理 Python对象的函数。当然,DOM 对象勉强算得上是 Python对象,但要对这些对象以有用的方式使用常规函数就比较困难。例如,因为DOM 对象的属性嵌套了 .children 列表,所以使用例如 pyobj_printer() 这样的常规函数将不会产生非常有用的输出。

使用类行为的技巧

xml_objectify 提供了一种非常精妙的技巧,使用这种技巧,只有在没有定义类的情况下才动态地为属性值定义类。这可以让您定义具有复杂行为的类,和可以放入特定XML 文档内容的属性。假设类 person 使用各种方法(如果需要,包括 .__init__() 方法)进行了预定义。导入到上例中 XML 地址簿中的每个 "person"都将具有给予它的所有行为,包括对放入实例中的数据的操作方法。当然,如果在对文档运行 XML_Objectify() 之前没有进行预定义,类就只是用于在实际XML 中定义的属性的容器。

字符标记处理

XML 标记通常是块级别的,但某些也属于字符级别。依我看,自然的 Python表示在每种情况下各不相同。块级别的子标记易于通过父标记的属性表示,父标记是根据子标记命名的。子标记属性的值是新Python 对象,它也是根据子标记命名的类型。例如, person 从层次上角度上考虑,可以具有 address 和 misc-info 。使用 Python,可以用 person.address 和 person.misc_info 来引用它们。

使用字符级别的标记时,标记的 内容是文本数据和这些数据的标记(常常是排版方面的)的混合体,子标记在层次结构上不是父标记中的一部分。例如, misc_info 对象实际上没有 ital 属性。那么,下面的 XML 类型应该如何表示呢?

上一页  1 2 3 4 5  下一页

Tags:XML 文档 作为

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