【问题标题】:Python xml elementree how to check if element if present and process code?Python xml elementtree如何检查元素是否存在并处理代码?
【发布时间】:2018-08-02 15:42:40
【问题描述】:
<rules>
    <entry name="rule name 1">
      <to>
        <member>untrust</member>
      </to>
      <from>
        <member>trust</member>
      </from>
      <source>
        <member>object1</member>
      </source>
      <destination>
        <member>any</member>
      </destination>
      <service>any</service>
      <description>'NAT Rule 1'</description>
      <nat-type>ipv4</nat-type>
      <source-translation>
        <static-ip>
          <bi-directional>yes</bi-directional>
          <translated-address>object1-pub</translated-address>
        </static-ip>
      </source-translation>
    </entry>
    <entry name="rule name 2">
      <to>
        <member>untrust</member>
      </to>
      <from>
        <member>trust</member>
      </from>
      <source>
        <member>any</member>
      </source>
      <destination>
        <member>object2-pub</member>
      </destination>
      <destination-translation>
        <translated-address>object2</translated-address>
      </destination-translation>
      <service>any</service>
      <description>'NAT Rule 2'</description>
      <tag>
        <member>DST NAT</member>
      </tag>
    </entry>
</rules>    

嗨,

我正在尝试在 python 中使用 xml elementree 处理上述 xml。我正在寻找一种方法来检查 或 是否存在。简而言之,如果是源翻译,则将 nat-type 变量设置为源 nat 并继续获取和 值。如果 存在,则处理逻辑以获取 .我将所有这些数据放在一个格式如下的字典中......

rules{
        rule_name: <name>
        options:{
                src_zone:<from>
                source:<source>
                dst_zone:<to>
                destination:<destination>
                nat-type:<appliaction>
                service:<service>
                traslated-address:<translated-address>
                destination-address:<destination-address>
        }       
}

我尝试了各种组合,但它不适合我。

【问题讨论】:

    标签: python xml python-3.x xml.etree


    【解决方案1】:

    要检查您的元素是否存在,您可以使用这样的 if 语句:

    import xml.etree.ElementTree as ET
    root = ET.parse('PATH_TO_YOUR_FILE').getroot()
    if len(root.findall('source-translation')) > 0:
        PUT YOUR CODE HERE
    

    【讨论】:

    • 可以根查找子元素下的子元素还是我需要通过子节点循环它。在最终配置中,我将解析 300 多个规则条目块。
    猜你喜欢
    • 2014-11-15
    • 2010-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-03
    • 1970-01-01
    相关资源
    最近更新 更多