0

我需要解析一个大的 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。我在这里阅读了其他帖子,提出了同样的问题,但它们已经过时了。

4

1 回答 1

0

我面临着类似的情况。我使用xml.etree.ElementTree复制模块来解析和复制 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")
于 2020-12-24T13:58:13.657 回答