有一种快速的方法来获取这个XML块并提取“版本”的值吗?
<xml>
<creator version='1.0'>
<program>BULK_EXTRACTOR</program>
<version>1.0.3</version>
<build_environment>
<compiler>GCC 4.2</compiler>
<compilation_date>2011-09-27T11:56:35</compilation_date>
<library name="afflib" version="3.6.12"></library>
<library name="libewf" version="20100226"></library>
</build_environment>
</creator>
</xml>
我知道我可以使用Python的Beautiful Soup来做到这一点,但我正在寻找一种简单的方法来使用DOM。
谢谢!
答案 0 :(得分:4)
假设您正在寻找版本元素,而不是版本属性, 使用lxml:
import lxml.etree as ET
content='''\
<xml>
<creator version='1.0'>
<program>BULK_EXTRACTOR</program>
<version>1.0.3</version>
<build_environment>
<compiler>GCC 4.2</compiler>
<compilation_date>2011-09-27T11:56:35</compilation_date>
<library name="afflib" version="3.6.12"></library>
<library name="libewf" version="20100226"></library>
</build_environment>
</creator>
</xml>
'''
doc=ET.fromstring(content)
version=doc.xpath('creator/version/text()')[0]
print(version)
# 1.0.3
要查找版本属性:
for elt in doc.xpath('//*[@version]'):
print(elt.tag, elt.attrib.get('name'), elt.attrib.get('version'))
# ('creator', None, '1.0')
# ('library', 'afflib', '3.6.12')
# ('library', 'libewf', '20100226')
答案 1 :(得分:2)
如果您没有安装 lxml ,则可以使用标准库中包含的ElementTree:
>>> import xml.etree.ElementTree
>>> doc = xml.etree.ElementTree.fromstring(content)
>>> doc.findtext('creator/version')
'1.0.3'