我需要解析一个大的xml文件并让我的代码生成一个新的xml文件,其中包含我需要的原始文件中的元素。你会怎么做?很多时候我会复制代码,有时编辑和插入我自己的代码。有什么模块可以让我的生活更轻松?如果我想解析所有这些东西,复制到新文件但更改动作标记等,这样的东西很容易在python中完成吗?
<COMMAND name="interface range"
help="Apply commands to a range of ports"
view="configure-range-view"
viewid="iface-range">
<PARAM name="interface_method"
help="Method to get interface information"
optional="false"
ptype="SUBCOMMAND"
mode="switch">
<PARAM name="FastEthernet"
help="FastEthernet IEEE 802.3"
ptype="SUBCOMMAND"
mode="subcommand">
<PARAM name="iface_num"
help="FastEthernet interface number"
ptype="IFACE_NUM">
</PARAM>
</PARAM>
<PARAM name="GigabitEthernet"
help="GigabitEthernet IEEE 802.3z"
ptype="SUBCOMMAND"
mode="subcommand">
<PARAM name="iface_num"
help="GigabitEthernet interface number"
ptype="GIGETH_NUM">
</PARAM>
</PARAM>
</PARAM>
<ACTION>
/path/to-scripts/script.py
</ACTION>
</COMMAND>
这是我正在使用的页面列出了库,wiki.python.org/moin/PythonXml我不是在寻找人工/代码等,我希望自己这样做,我正在寻找人们的经验这件事,我想知道是否有一种每个人都使用的标准形式,例如ElementTree。我在这里读过其他帖子,问同样的问题,但它们已经老了。
答案 0 :(得分:0)
我遇到了类似的情况。我使用了 xml.etree.ElementTree 和 copy 模块来解析和复制 XML。我默认使用浅拷贝。您可以改用deepcopy。
import xml.etree.ElementTree as ET
import copy
tree = ET.parse("SourceFile.xml")
root = tree.getroot()
command = ET.Element("COMMAND")
for param in root.iter('COMMAND'):
condition:
paramscopy = copy.copy(param)
command.append(paramscopy)
btree = ET.ElementTree(command)
btree.write("NewFile.xml")