使用Python和lxm检索XML父属性和子属性

2024-09-29 07:26:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试在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”的值(如果存在的话),但是我不知道如何返回(我只能将它作为一个单独的列表使用,但我需要维护它们之间的链接)。在

注意:我将把这些值写到日志文件中,但是由于我没有成功地得到我想要的所有内容,所以我还没有添加“write out”代码。在

这是XML的结构:

^{pr2}$

如何让Python返回id+idref?在

我以前使用过的示例有名称空间,但这个文件没有


Tags: 文件代码nametreeparserxmllxmlxpath
1条回答
网友
1楼 · 发布于 2024-09-29 07:26:15

由于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

相关问题 更多 >