Python elementtree Получение дублирующих элементов из цикла при вставке подэлементов для некорневого узла - PullRequest
0 голосов
/ 08 февраля 2019

Использование Python elementtree, чтобы попытаться вставить подэлементы в подузел с помощью цикла, но потерять корневой конечный узел.

У меня есть следующий 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 голосов
/ 11 февраля 2019

После дальнейшего расследования, пропал без вести от «кота».Интересно, почему кошка это уберет?Я сделал дерево. Свалка есть.

...