SmtC: Show me the Code
Ole Peter Smith
Instituto de Matemática e Estatística
Universidade Federal de Goiás
http://www.olesmith.com.br

Dictionaries
Uma sociedade sera - sempre - avaliado
Pelo jeito que trata seus mais fracos.
Mahatma

Generating XML

??Second.py3 Listing: Second.py3.
#!/usr/bin/python3

#A dict
persons=[
    {
        "ID": 1,
        "Name": "Ole",
        "Email": "ole@ufg.br",
        "Birthday": "11/01/1964",
        "Phone": "62 5555555",
        "Fax": "62 5555555",
    },
    {
        "ID": 2,
        "Name": "Ole",
        "Email": "ole@ufg.br",
        "Birthday": "11/01/1964",
        "Phone": "62 5555555",
        "Fax": "62 5555555",
    },
    {
        "ID": 3,
        "Name": "Ole",
        "Email": "ole@ufg.br",
        "Birthday": "11/01/1964",
        "Phone": "62 5555555",
        "Fax": "62 5555555",
    },
    {
        "ID": 4,
        "Name": "Ole",
        "Email": "ole@ufg.br",
        "Birthday": "11/01/1964",
        "Phone": "62 5555555",
        "Fax": "62 5555555",
    },
    {
        "ID": 5,
        "Name": "Ole",
        "Email": "ole@ufg.br",
        "Birthday": "11/01/1964",
        "Phone": "62 5555555",
        "Fax": "62 5555555",
    },
    {
        "ID": 6,
        "Name": "Ole",
        "Email": "ole@ufg.br",
        "Birthday": "11/01/1964",
        "Phone": "62 5555555",
        "Fax": "62 5555555",
    },
]


lt="<"
gt=">"

def Dict2XML(name,dct,level=1,indent="   "):
    lines=[
        indent*level+lt+name+gt
    ]
    
    keys=list(dct.keys())
    for j in range(len(keys)):
        key=keys[j]
        value=str(dct[ key ])
        
        text=indent*(level+1)

        startkey=lt+key+gt
        endkey=lt+"/"+key+gt
        
        text=text+startkey+value+endkey
        
        lines.append(text)

    lines.append(indent*level+lt+"/"+name+gt)

    return "\n".join(lines)

def Dicts2XML(name,dcts,level=1,indent="   "):
    texts=[
        indent*level+lt+name+"s"+gt
    ]

    for i in range(len(dcts)):
        #Increment level
        text=Dict2XML(name,dcts[i],level+1,indent)
        
        texts.append(text)

    texts.append(indent*level+lt+"/"+name+"s"+gt)

    return "\n".join(texts)



#Main execution 
print(lt+"?xml version=\'1.0\'"+gt)

print(Dicts2XML("pessoa",persons))

Output:
<?xml version='1.0'>
   <pessoas>
      <pessoa>
         <Email>ole@ufg.br</Email>
         <Fax>62 5555555</Fax>
         <Name>Ole</Name>
         <Phone>62 5555555</Phone>
         <ID>1</ID>
         <Birthday>11/01/1964</Birthday>
      </pessoa>
      <pessoa>
         <Email>ole@ufg.br</Email>
         <Fax>62 5555555</Fax>
         <Name>Ole</Name>
         <Phone>62 5555555</Phone>
         <ID>2</ID>
         <Birthday>11/01/1964</Birthday>
      </pessoa>
      <pessoa>
         <Email>ole@ufg.br</Email>
         <Fax>62 5555555</Fax>
         <Name>Ole</Name>
         <Phone>62 5555555</Phone>
         <ID>3</ID>
         <Birthday>11/01/1964</Birthday>
      </pessoa>
      <pessoa>
         <Email>ole@ufg.br</Email>
         <Fax>62 5555555</Fax>
         <Name>Ole</Name>
         <Phone>62 5555555</Phone>
         <ID>4</ID>
         <Birthday>11/01/1964</Birthday>
      </pessoa>
      <pessoa>
         <Email>ole@ufg.br</Email>
         <Fax>62 5555555</Fax>
         <Name>Ole</Name>
         <Phone>62 5555555</Phone>
         <ID>5</ID>
         <Birthday>11/01/1964</Birthday>
      </pessoa>
      <pessoa>
         <Email>ole@ufg.br</Email>
         <Fax>62 5555555</Fax>
         <Name>Ole</Name>
         <Phone>62 5555555</Phone>
         <ID>6</ID>
         <Birthday>11/01/1964</Birthday>
      </pessoa>
   </pessoas>

Output from: /usr/bin/python3 Second.py3
Messages:
0 secs.