我正在解析一个 xml 文件: http: //pastebin.com/fw151jQN 我希望以复制的方式读取它并将其写入一个新文件,其中一些已修改,很多未修改,还有很多它忽略了。作为初始通道,我想找到某个 xml,并将其写入一个未更改的新文件。
这是最初感兴趣的 xml 部分:
<COMMAND name="shutdown"
help="Shutdown the selected interface">
<CONFIG priority="0x7F01" />
<ACTION>
/klas/klish-scripts/interfaces.py conf -i ${iface} --enable 0
</ACTION>
</COMMAND>
<COMMAND name="no shutdown"
help="Enable the selected interface">
<CONFIG operation="unset" pattern="shutdown"/>
<ACTION>
/klas/klish-scripts/interfaces.py conf -i ${iface} --enable 1
</ACTION>
</COMMAND>
我的代码如下
#!/usr/bin/python -tt
import xml.etree.ElementTree as ET
tree = ET.parse('interface_range_test.xml')
root = tree.getroot()
namespaces = {'command': 'http://clish.sourceforge.net/XMLSchema}COMMAND','config': 'http://clish.sourceforge.net/XMLSchema}CONFIG'}
all_links = tree.findall('.//')
for i in all_links:
if namespaces['command'] in i.tag:
if i.attrib['name'] == "shutdown":
print i.attrib
if namespaces['config'] in i.tag:
print i.attrib
输出:
{'name': 'shutdown', 'help': 'Shutdown the selected interface'}
{'priority': '0x7F01'}
{'pattern': 'shutdown', 'operation': 'unset'}
这读入文件,我可以找到关机信息,现在我想找到CONFIG
信息,然后是action
信息和它的文本,但是当我搜索时CONFIG
,两者都有shutdown
信息no shutdown
。这种情况会在很多xml中出现,很多都是相同的格式。
关机:{'priority': '0x7F01'} 不关机:{'pattern': 'shutdown', 'operation': 'unset'}
如何指定要查看的内容,我可以检查此信息的父级吗?或者我可以检查它上面的超级元素的子元素(http://clish.sourceforge.net/XMLSchema}COMMAND
)?