<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。我正在寻找一种方法来检查是否存在<'source-traslation'>或<'destination-translation'>。简而言之,如果是源转换,则将nat类型变量设置为源nat,并进一步获取和值。如果存在<'destination-address'>,则处理逻辑以获取其值。我把所有这些数据放在一个字典里,格式是这样的…
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>
}
}我已经尝试了各种组合,但是它对我不起作用。
发布于 2018-08-02 23:56:14
要检查您的元素是否存在,您可以使用如下的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 HEREhttps://stackoverflow.com/questions/51657574
复制相似问题