我有以下XML文件:
some help of StackOverflow,我设法完成了我打算做的一些事情。现在,我想在我的脚本中添加一个搜索功能,并单独处理该子树。例如,我问用户 - 什么ID?他进入AL2012-2015-088
。在一个巨大的XML文件中递归搜索此ID,脚本应该找到此ID并打印它拥有的元素。
我使用content.find("AL2012-2015-088")
,但它不会工作!
答案 0 :(得分:1)
如果你切换到lxml.etree
,你就可以使用XPath表达式的全部功能(你也可以大大提高速度)。
以下是一个示例 - 使用所需的update
找到id
元素并打印出title
:
from lxml import etree as ET
id_that_user_enters = "AL2012-2015-088"
tree = ET.parse("example.xml")
update = tree.xpath("//update[id = '%s']" % id_that_user_enters)[0]
print(update.findtext("title"))
打印:
Amazon Linux 2012.03 - AL2012-2015-088: medium priority package update for gnutls
答案 1 :(得分:0)
我相信find命令旨在查找标记而不是标记中的文本,因此您应该在id
上查找。我不确定您需要哪些信息来自XML,但这是一个获得标题的示例。
import xml.etree.ElementTree as elt
content = elt.parse('example.xml').getroot()
def get_id_info(inputID):
for child in content:
if child.find('id').text == inputID:
print child.find('title').text
get_id_info('AL2012-2014-001')
给出Amazon Linux 2012.03 - AL2012-2014-001...