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

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

 2007-03-30 12:26:26 来源:WEB开发网   
核心提示: 使用 [xml.dom] 和 [xml_objectify] Python对象print py_obj.person[1].address.cityprint dom_obj.get_childNodes()[1].get_childNodes()[3].get_childNodes()[

使用 [xml.dom] 和 [xml_objectify] Python对象     print
     py_obj.person[1].address.city
    
     print
     dom_obj.get_childNodes()[1].get_childNodes()[3].
get_childNodes()[3].get_attributes()[
    'city'].value
    
     print
     dom_obj._node.children[1].children[3].children[3].
   attributes[
    'city'].children[0].value
        

DOM树是按严格定序的节点树组织起来的。枚举这些节点并不困难,但要引用其中特定的节点就非常麻烦了。如果有些节点是空白文本和处理指令节点(您几乎不太关心它们),情况就更糟糕了,因此在节点列表中查找子标记多半要反复试验。在上例中,访问本机属性(例如 .children )和 DOM 样式的方法(例如 .get_childNodes() )用在不同的 print 语句中。使用这两种方法时,要知道引用了 XML文档中哪些数据都很不容易。

相反,上例中第一个 print 语句非常好地文档化了自己。唯一需要注意的一个小问题是必须使用 Python的基于 0 的列表索引。除此以外,这行只说: "Print the city of theaddress of the second person in the addressbook." ("New York"是每个语句都要打印的。)为进一步帮助您理解, py_obj.__class__ 就是 "addressbook",与 XML文档的根元素对应。每个不仅包含简单文本的属性都是特定类的实例;这个特定类是根据定义它的XML 标记命名的。

如您所见, xml.dom 使用起来通常比较难,它的语法也很模糊。本机 Python对象使用起来就简单得多。请注意, xml_objectify 在内部广泛利用了 DOM。实际上,每个 XML_Objectify 实例都包含了一个 ._dom 属性,该属性是打开的 XML 文档的DOM 树。不过,创建的实例 .make_instance 不包含任何DOM,它是根标记的类类型。

上一页  1 2 3 4 5  下一页

Tags:XML 文档 作为

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