Я пишу код Python ElementTree, который будет:
- Изменить itemID в xml и записать на диск.
- Перейти к следующему itemID в itemIDList, изменить itemID в xml и записать на диск
Проблема в том, что XML перезаписывается снова и снова, и я хочу добавить данные в конец нового XML-файла.
Пока это мой код.
base_path = os.path.dirname(os.path.realpath(__file__))
xml_file = os.path.join(base_path, 'data.xml')
tree = ET.parse(xml_file)
root = tree.getroot()
with open('a.txt', 'r') as f:
d = f.readlines()
itemIDlist = []
for i in range(len(d)-1):
hold = d[i].split('\n')
itemIDlist.append(str(hold[0]))
for e in root.iter():
if 'itemID' in e.keys():
e.set('itemID', itemIDlist[i])
new_data = ET.tostringlist(root)
new_xml = open('newXml.xml', 'w')
new_xml.write(new_data)
В текстовом файле есть список чисел, подобных этим; мы называем это a.txt
19283
29354
34958
59854
Исходный файл XML выглядит следующим образом
<requests>
<inventory name="WaterMelon" itemID="6834833" action="inStock">
<user username="Carlos">
<role name="GeneralManager"/>
</user>
</inventory>
<inventory name="StrawBerry" itemID="9283343" action="inStock">
<user username="Carlos">
<role name="GeneralManager"/>
</user>
</inventory>
<inventory name="WaterMelon" itemID="" action="inStock">
<user username="Carlos">
<role name="GeneralManager"/>
</user>
</inventory>-->
</requests>
В настоящее время я получаю четыре разных файла, однако я просто хочу получить один XML-файл, содержащий все результаты. Это должно выглядеть так
<requests>
<inventory action="inStock" itemID="19283" name="WaterMelon">
<user username="Carlos">
<role name="GeneralManager" />
</user>
</inventory>
<inventory action="inStock" itemID="19283" name="StrawBerry">
<user username="Carlos">
<role name="GeneralManager" />
</user>
</inventory>
<inventory action="inStock" itemID="19283" name="WaterMelon">
<user username="Carlos">
<role name="GeneralManager" />
</user>
</inventory>-->
<inventory action="inStock" itemID="29354" name="WaterMelon">
<user username="Carlos">
<role name="GeneralManager" />
</user>
</inventory>
<inventory action="inStock" itemID="29354" name="StrawBerry">
<user username="Carlos">
<role name="GeneralManager" />
</user>
</inventory>
<inventory action="inStock" itemID="29354" name="WaterMelon">
<user username="Carlos">
<role name="GeneralManager" />
</user>
</inventory>-->
<inventory action="inStock" itemID="34958" name="WaterMelon">
<user username="Carlos">
<role name="GeneralManager" />
</user>
</inventory>
<inventory action="inStock" itemID="34958" name="StrawBerry">
<user username="Carlos">
<role name="GeneralManager" />
</user>
</inventory>
<inventory action="inStock" itemID="34958" name="WaterMelon">
<user username="Carlos">
<role name="GeneralManager" />
</user>
</inventory>-->
</requests>
Пожалуйста, помогите