在之前所写的解析XML:ElementTree一文中,我是用Python标准库里的xml.etree.ElementTree来实现的。不过这种对于含有命名空间的XML则显得不大方便和直观。其实Python标准库里还提供了更简单的方法,那就是利用The Document Object Model API,即xml.dom。这种方法通过检索DOM树实现。还是以之前的XML文档为例:<?xml  version="1.0" encoding="utf-8"?>

0

1311211532361125903

提交成功

0

首先将其解析到内存中:>>> import xml.dom.minidom

>>> dom = xml.dom.minidom.parseString(xml)

>>> dom

接下来就可以采用类似JavaScript里DOM树的操作方法来找到我们想要的节点,例如获取“0”:>>> nodes = dom.getElementsByTagName('State')

>>> nodes

[]

然后遍历该节点内的节点找到所需的文本内容(这里节点内仅包含一个文本子节点):>>> text = ''

>>> for node in nodes[0].childNodes:

if node.nodeType == xml.dom.minidom.Node.TEXT_NODE:

text += node.data

>>> text

u'0'

这种方法方便而易于理解,不过如果DOM树很大,那性能可能相对较低。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐