Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Python: Writing list to xml file

Tags:

python

xml

I'm trying to write the list elements to an xml file. I have written the below code. The xml file is created, but the data is repeated. I'm unable to figure out why is the data written twice in the xml file.

users_list = ['Group1User1', 'Group1User2', 'Group2User1', 'Group2User2']
def create_xml(self):
    usrconfig = Element("usrconfig")
    usrconfig = ET.SubElement(usrconfig,"usrconfig")
    for user in range(len( users_list)):
        usr = ET.SubElement(usrconfig,"usr")
        usr.text = str(users_list[user])
    usrconfig.extend(usrconfig)
    tree = ET.ElementTree(usrconfig)
    tree.write("details.xml",encoding='utf-8', xml_declaration=True)

Output File: details.xml

-

<usr>Group1User1</usr>

<usr>Group1User2</usr>

<usr>Group2User1</usr>

<usr>Group2User2</usr>

<usr>Group1User1</usr>

<usr>Group1User2</usr>

<usr>Group2User1</usr>

<usr>Group2User2</usr>

enter image description here

like image 448
vnkathare Avatar asked Sep 28 '26 06:09

vnkathare


1 Answers

usrconfig.extend(usrconfig)

This line looks suspicious to me. if userconfig was a list, this line would be equivalent to "duplicate every element in this list". I suspect that something similar happens for Elements, too. Try deleting that line.

import xml.etree.ElementTree as ET

users_list = ["Group1User1", "Group1User2", "Group2User1", "Group2User2"]

def create_xml():
        usrconfig = ET.Element("usrconfig")
        usrconfig = ET.SubElement(usrconfig,"usrconfig")
        for user in range(len( users_list)):
                usr = ET.SubElement(usrconfig,"usr")
                usr.text = str(users_list[user])
        tree = ET.ElementTree(usrconfig)
        tree.write("details.xml",encoding='utf-8', xml_declaration=True)

create_xml()

Result:

<?xml version='1.0' encoding='utf-8'?>
<usrconfig>
<usr>Group1User1</usr>
<usr>Group1User2</usr>
<usr>Group2User1</usr>
<usr>Group2User2</usr>
</usrconfig>
like image 51
Kevin Avatar answered Sep 29 '26 21:09

Kevin



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!