Python elementtree为非根节点插入子元素时,从循环中获取重复元素

时间:2019-02-08 07:59:24

标签: python xml elementtree

使用Python元素树尝试使用循环将子元素插入子节点,但丢失根端节点。

我有以下XML的参数filename = / Desktop / test.xml,并传入参数“ a,b,c”

<root><A></A></root>

代码:

#!/usr/bin/env python

import argparse
from xml.etree import ElementTree as ET

def get_args():
    """ Parse and return the arguments of the application """
    parser = argparse.ArgumentParser(description = "Replace ")
    parser.add_argument('filename',
        action = 'store',
        help = '')
    parser.add_argument('s',
        action = 'store',
        help = '')
    return parser.parse_args()


def appendSS(p, ss):
    for s in ss.split(','):
        w = ET.Element("W")
        w.set("name",s)
        p.append(w)


if __name__ == '__main__':
    """ The starting point of the application """
    args = get_args()
    doc = ET.parse(args.filename)
    root = doc.getroot()

    appendSS(root.find("A"), args.s)
    tree = ET.ElementTree(root)
    if tree.write(args.filename):
        print ("%s was updated successfully!" % args.filename)
    else:
        print ("failed to update %s" % args.filename)

预期:

<root><A><W name="a"/><W name="b"/><W name="c"/></A></root>

实际:

<root><A><W name="a"/><W name="b"/><W name="c"/></A>

还会收到“无法更新<filename>”错误消息。

1 个答案:

答案 0 :(得分:0)

进一步调查后,缺少的是“猫”中的。想知道为什么猫会删除它?我做了一棵树。转储,在那里。