我收到了来自API端点的以下xml响应:
'
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Events>
<eventData>
<eventID>32669037</eventID>
<userID>
<loginID>userone</loginID>
<userDN>cn=userone,cn=Users,dc=us,dc=users,dc=com</userDN>
</userID>
<type>Logout</type>
<ipAddress>1.2.3.4</ipAddress>
<status>success</status>
<accessTime>2022-12-04T09:56:39.678Z</accessTime>
<ECID>abcdefgh</ECID>
<attributeMap>
<attribute>
<key>User-Agent</key>
<value>Mozilla/5.0 (Unknown; Linux x86_64) AppleWebKit/538.1 (KHTML, like Gecko) CasperJS/1.1.3+PhantomJS/2.1.1 Safari/538.1</value>
</attribute>
</attributeMap>
</eventData>
<eventData>
<eventID>62669036</eventID>
<userID>
<loginID>usertwo</loginID>
<userDN>cn=usertwo,cn=Users,dc=us,dc=users,dc=com</userDN>
</userID>
<type>CredentialValidation</type>
<ipAddress>5.6.7.8</ipAddress>
<status>success</status>
<accessTime>2022-12-04T09:53:06.779Z</accessTime>
<ECID>adfxx^^sfdffd</ECID>
<attributeMap>
<attribute>
<key>User-Agent</key>
<value>Mozilla/5.0 (Unknown; Linux x86_64) AppleWebKit/538.1 (KHTML, like Gecko) CasperJS/1.1.3+PhantomJS/2.1.1 Safari/538.1</value>
</attribute>
</attributeMap>
</eventData>
</Events>
'
我的目标是将每个“eventData”扁平化为一行以加载到表中,因此上面的代码片段是2行。
我尝试过xmltodict并迭代字典,但我无法得到“较低级别”的值。json.dumps和.loads after也是如此。与转换为 Dataframe 类似,似乎无法使用for循环来遍历整个过程并同时访问较低级别的成员值。
我怎样才能做到这一点?
每次我在不同的对象类型上尝试for循环时,似乎总是在最高级别(事件)
此外,如果我尝试读取值,例如print(['Events']['eventData'][0]['eventID'])或访问较低级别的成员,我可以迭代,但无法正确定义循环通过[0]的范围
1条答案
按热度按时间nbnkbykc1#
您可以尝试使用
beautifulsoup
将XML文档解析为DataFrame:图纸: