如何使用<pair key =“ ...”> </pair>格式解析xml文件

时间:2019-10-17 16:30:09

标签: python xml

我希望使用python解析“ .xml”文件。该文件的格式如下:

<root><dm_log_packet>
    <pair key ="type_id">LTE_PHY_Serv_Cell_Measurement</pair>
  </dm_log_packet>
</root>

我尝试使用ElementTree解析它,但失败了。

这是我的代码:

from xml.etree import ElementTree

class Log:
    def __init__(self,type_id=None):
        self.type_id=type_id
    def __str__(self):
        return self.type_id

roota=ElementTree.parse("file.xml")
log_file = roota.findall("dm_log_packet")

lo = []
for aa in log_file:
    log = Log()
    log.type_id = aa.find("type_id").text
    lo.append(log)

我希望解析每对,但是不能像我有<type_id>...</type_id>对那样解析。

2 个答案:

答案 0 :(得分:0)

您可以使用BeautifulSoup

StartCoroutine

输出将

  

'1'

More Descriptive Answer

答案 1 :(得分:0)

.find().findall()期望XPath作为参数,像"dm_log_packet"这样的普通字符串将找不到任何内容。

from xml.etree import ElementTree

class Log:
    def __init__(self, type_id=None):
        self.type_id=type_id

    def __str__(self):
        return self.type_id

tree = ElementTree.parse("file.xml")
lo = []

for dm_log_packet in tree.findall(".//dm_log_packet"):
    pair = dm_log_packet.find("./pair/[@key='type_id']")
    if pair is not None:
        lo.append(Log(pair.text))

请注意,dm_log_packet.find("./pair/[@key='type_id']")在没有None时将返回<pair key="type_id">,因此需要额外的支票。