从XML文件解析和提取字段值

2024-06-16 15:22:06 发布

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

我有几GB的XML格式的日志文件。我感兴趣的是找到具有特定命令的行,并提取订购该命令的用户

也就是说,我想检查所有行中的一个特定字段是否有一个特定的值,然后从同一行的另一个字段中提取一个未知值。我该怎么做呢(我试着转向文档和其他来源,但不了解它是如何工作的。)

我目前使用的是Python2.7.15,但是如果3.*更好或者更简单,我会使用它

下面是我感兴趣的日志文件中的一行的示例:

<?xml version="1.0" encoding="UTF-8"?>
<IHEYr4>
  <UserAuthenticated>
    <LocalUsername>User1</LocalUsername>
    <Action>Login</Action>
  </UserAuthenticated>
  <Host>192.168.1.15</Host>
  <TimeStamp>2018-01-18T02:31:00</TimeStamp>
</IHEYr4>

Tags: 文件用户文档命令host格式来源action
1条回答
网友
1楼 · 发布于 2024-06-16 15:22:06

使用ElementTree

演示:

x = """<?xml version="1.0" encoding="UTF-8"?>
<IHEYr4>
  <UserAuthenticated>
    <LocalUsername>User1</LocalUsername>
    <Action>Login</Action>
  </UserAuthenticated>
  <Host>192.168.1.15</Host>
  <TimeStamp>2018-01-18T02:31:00</TimeStamp>
</IHEYr4>

"""

import xml.etree.ElementTree as ET
xmlVal = ET.fromstring(x)
if xmlVal.find("UserAuthenticated/Action").text == 'Login':
    print(xmlVal.find("Host").text, xmlVal.find("TimeStamp").text)

输出:

('192.168.1.15', '2018-01-18T02:31:00')

相关问题 更多 >