如何使用python从XML文件中提取非常具体和深层的值?

时间:2017-04-26 16:07:57

标签: python xml parsing xml-parsing lxml

嗨@ all所以我有一个~1MB的大XML文件,主要包含日志内容。我想用Python解析它以提取特定数据(如错误代码等),现在只需将“提取的”数据打印到控制台。

XML-FIle看起来像这样:

<?xml version="1.0" encoding="utf-8"?>
<Report blablabla...>
     <Service>
        <Name>Reportlogger</Name>
        <Version>1.00.000</Version>
     </Service>
     <PcInformation>
        <PcNumber>001-1</PcNumber>   //Information to extract ("001-1")
     </PcInformation>
     .                              //Dots mean the length between two
     .                              //Tags is variable, so you can't
     .                              //watch out for a specific line
     .
     <Components>
        <Component>                 
           <Name>Chip1</Name>       //Information to extract ("Chip1")
           .
           .
           .
        </Component>
        <Component>                 //unfortunately the tag always called
           <Name>Chip23</Name>      //<Component> and has no counter
           <SWInformation>          // like <Component1>, <Component2>...
              <Version>
              <VersionValue>00/11/01</VersionValue> //Information to
              </Version>                //extract ("00/11/01")
           </SWInformation>
        </Component>
        .
        .
        .
     </Components>
  </Report>

我尝试使用BeautifulSoup和lxml提取值,但没有结果或错误消息......

如果有人能提供一些关于如何导航或迭代这样的xml的信息,我会非常感激。我没有找到解决方案,因为它是一个相当复杂的XML(对我而言);

我的Python代码如下所示:(它实际上只是打开我的XML文件)

import sys
import re
fname=r"C:\temp\PythonData\test.xml"
xmlFile = open(fname , 'r', encoding='utf-8')
sc=xmlFile.read()

我想到了创建XML ElementTree对象然后找到我需要的值。我不知道怎么做,因为有多个标签(所以我不能定义一个特定的标签并从中提取数据)

我的想法是检查组件\名称值,然后在其下提取\ Component \ SWInformation \ VersionValue(我要提取的那个)。总而言之,我对python很陌生,所以代码示例非常受欢迎。

谢谢。

0 个答案:

没有答案