用Python查询XML子级

2024-06-25 22:55:50 发布

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

我正在使用Python使用API查询我的Tableau服务器。我正在提取每个工作簿的修订历史记录,并尝试查看每个编辑都是哪个用户做的。在revision元素中,用户有一个子元素。我试图理解如何从这个子元素中提取用户名,并将其与正确的修订数据相关联。你知道吗

下面是返回的xml数据的示例行:

<tsResponse>
  <revisions>
    <revision revisionNumber="1" publishedAt="2017-01-17 T20:43:40Z" 
     deleted="false" current="true" sizeInBytes="1939262">
    <publisher id="53f212f3" name="1563524" />
    </revision>
  </revisions>
</tsresponse>

包含id和name的元素是我试图获取数据的地方。我可以把它拉到第二个字典列表中,但是我需要所有的数据都放在一个字典中,这样我就可以解析标题并输出到csv。以下是我编写的相关代码:

Pub = []
Rev = []
RevDet = []
revisions = server_response_WB2.findall('.//t:revision', namespaces=xmlns)
publishers = server_response_WB2.findall('.//t:publisher', namespaces=xmlns)
for revision in revisions:
    d = {}
    d['workbook id'] = workbookid[i]
    d['workbook name'] = workbooknames[i]
    d['revision number'] = revision.get('revisionNumber')
    d['revision created at'] = revision.get('publishedAt')
    d['is deleted'] = revision.get('deleted')
    d['is current'] = revision.get('current')
    Rev.append(d)
for publisher in publishers:
    d = {}
    d['user name'] = publisher.get('name')
    Pub.append(d)
RevDet.append(Rev[i])
RevDet.append(Pub[i])

如您所见,最后我将两个字典列表附加到RevDet,因此数据是紧密关联的。例如,RevDet的元素0和元素1将分别包含关联的修订版和发布者数据。关于如何更好地处理这个问题有什么想法吗?我下一步该怎么做?你知道吗


Tags: 数据nameid元素get字典revrevision
1条回答
网友
1楼 · 发布于 2024-06-25 22:55:50

revision.find('t:publisher', namespaces=xmlns)给出包含的元素,因此只需在第一个for语句中使用revision.find('t:publisher', namespaces=xmlns).get('name')即可提取值。你知道吗

相关问题 更多 >