Использование 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>
».