WEB开发网
开发学院软件开发Python 使用 ElementTree,以 Python 语言处理 XML 阅读

使用 ElementTree,以 Python 语言处理 XML

 2007-03-29 12:11:28 来源:WEB开发网   
核心提示: ElementTree 在一个称为 .attrib 的节点属性中存储 XML 属性;这些属性被存储在字典中, gnosis.xml.objectify将 XML 属性直接放置到相应名称的节点属性中,使用 ElementTree,以 Python 语言处理 XML(7),我使用的样式往往弱化

ElementTree 在一个称为 .attrib 的节点属性中存储 XML 属性;这些属性被存储在字典中。 gnosis.xml.objectify将 XML 属性直接放置到相应名称的节点属性中。我使用的样式往往弱化 XML 的属性和元素内容之间的差异 - 我认为,这应该是由 XML,而不是我的本机数据结构所担心的问题。举例来说:

清单 8. 访问子节点和 XML 属性时的差异

>>> xml = '<root foo="this"><bar>that</bar></root>'
>>> open('attrs.xml','w').write(xml)
>>> et = ElementTree.parse('attrs.xml').getroot()
>>> xo = XML_Objectify('attrs.xml').make_instance()
>>> et.find('bar').text, et.attrib['foo']
('that', 'this')
>>> xo.bar.PCDATA, xo.foo
(u'that', u'this')

在 XML 属性(创建了包含有文本的节点属性)和 XML 元素内容(创建了包含对象 - 也许还包括具有 .PCDATA 的子节点 - 的节点属性)之间, gnosis.xml.objectify仍造成了 一些差异。

XPath 和 tail 属性

ElementTree 在其 .find*() 方法中实现了一个 XPath 的子集。对于在子节点层次之间进行查找而言,使用该样式与使用嵌套代码相比,要简洁许多,尤其对含有通配符的 XPath 更是如此。举例来说,如果我想知道对我的 Web 服务器所有访问的时间戳记,可以这样检查 weblog.xml:

清单 9. 使用 XPath 查找嵌套子元素

>>> from elementtree import ElementTree
>>> weblog = ElementTree.parse('weblog.xml').getroot()
>>> timestamps = weblog.findall('entry/dateTime')
>>> for ts in timestamps:
...   if ts.text.startswith('19/Aug'):
...     print ts.text

上一页  2 3 4 5 6 7 8 9  下一页

Tags:使用 ElementTree Python

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