我正在尝试使用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)
它按预期返回值列表。我还想返回'child'的值(它存在的地方),但我无法弄清楚(我只能将它作为一个单独的列表工作,但我需要保持它们之间的链接)。
注意:我会将值写入日志文件,但由于我没有成功地将所有内容都写出来,我还没有添加“写出”代码。
这是XML的结构:
<dataimport dtdversion="1.1">
<programmelist>
<programme id="eid-273168">
<imageref idref="img-1844575"/>
如何让Python返回id + idref?
我之前使用的示例中有名称空间,但此文件没有。
答案 0 :(得分:1)
由于xpath()
方法返回树,您可以再次使用xpath获取所需的idref列表:
for r in tree.xpath('/dataimport/programmelist/programme')
progid = r.get("id")
ref_list = r.xpath('imageref/@idref')
print progid, ref_lis