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

时间:2018-05-08 09:14:30

标签: python xml

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

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

我目前使用Python 2.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>

1 个答案:

答案 0 :(得分:0)

使用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')