解析xml并将其复制到新文件?

时间:2013-06-28 10:26:22

标签: python xml parsing

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

1 个答案:

答案 0 :(得分:0)

我遇到了类似的情况。我使用了 xml.etree.ElementTreecopy 模块来解析和复制 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")