【发布时间】:2014-02-01 09:53:38
【问题描述】:
我正在尝试在 Python / lxml 中使用 XPATH 处理 XML 文件。
我可以使用以下代码提取树的特定级别的值:
file_name = input('Enter the file name, including .xml extension: ') # User inputs file name
print('Parsing ' + file_name)
from lxml import etree
parser = etree.XMLParser()
tree = etree.parse(file_name, parser)
r = tree.xpath('/dataimport/programmelist/programme')
print (len(r))
with open(file_name+'.log', 'w', encoding='utf-8') as f:
for r in tree.xpath('/dataimport/programmelist/programme'):
progid = (r.get("id"))
print (progid)
它按预期返回值列表。我还想返回一个“孩子”的值(它存在的地方),但我不知道如何(我只能让它作为一个单独的列表工作,但我需要维护它们之间的链接)。
注意:我会将这些值写入日志文件,但由于我没有成功获取我想要的所有内容,因此我还没有添加“写出”代码。
这是 XML 的结构:
<dataimport dtdversion="1.1">
<programmelist>
<programme id="eid-273168">
<imageref idref="img-1844575"/>
如何让 Python 返回 id + idref?
我之前使用的示例有命名空间,但这个文件没有。
【问题讨论】:
-
您的示例代码不一致。你在哪里使用
f?tree是什么?您是在阅读文件还是在其中写入文件? -
已更新 - 抱歉,应该首先包含它
-
我已经在上面的正文中添加了它,但请注意,结果最终会写入日志文件(因此引用了'with open(file_name'.log, 'w'. ..)