繁体   English   中英

使用XML进行Python XML解析

[英]Python XML parsing with XML

我在XML中附加了其他标签。 我有以下XML

<result>
 <job>
    <tenq>15:37:53</tenq>
    <tdeq>15:37:53</tdeq>
    <tlast>15:37:53</tlast>
    <status>FIN</status>
    <id>168</id>
  </job>
  <log>
    <logs count="20" progress="100">
      <entry logid="6476178463223293277">
        <domain>1</domain>
        <receive_time>2017/10/13 15:37:50</receive_time>
        <serial>001801035328</serial>
        <seqno>6291444553</seqno>
        <----SKIP---->
        <pkts_received>0</pkts_received>
        <session_end_reason>policy-deny</session_end_reason>
        <action_source>from-policy</action_source>
      </entry>
      <----SKIP---->
    </logs>
  </log>
  <meta>
    <devices>
      <entry name="localhost.localdomain">
        <hostname>localhost.localdomain</hostname>
        <vsys>
          <entry name="vsys1">
            <display-name>vsys1</display-name>
          </entry>
        </vsys>
      </entry>
    </devices>
  </meta>
</result>

要获取有关状态的信息,请按照以下步骤操作

    xml_parsed = ET.fromstring(resp.text)
    response_parsed = xml_parsed[0]
    resp_elems = response_parsed.findall('job')

然后,我应该接收许多日志记录并阅读所有日志条目。 要获取日志,我再次开始:

    response_parsed = xml_parsed[0]
    resp_elems = response_parsed.findall('log')
    job_status = resp_elems[0].find('entry')

如何获取日志计数? 是否存在更优雅的方式来解析信息?

您可以使用xml.etree.ElementTree.Element.items()来获取元素属性,作为(名称,值)对的序列。 请记住,属性是以任意顺序返回的,因此您可能必须进行一些相等性或成员资格检查才能提取所需的信息:

import xml.etree.ElementTree as ET

xml_str = """<result> ... </result>"""

tree = ET.fromstring(xml_str)

for x in tree.find('log'):
    print(x.items()) # [('count', '20'), ('progress', '100')]
    print(''.join(y[1] for y in x.items() if 'count' in y[0])) # 20

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM