Domanda

Lavorando sulla creazione di un file XML con alcuni dati utilizzando Python. Sto cercando di impostare valori nel dizionario sui dati nell'elenco. Farò più righe, quindi è per questo che faccio riferimento a ogni valore in questo modo. Grazie ragazzi. Ecco il mio codice:

from xml.etree import ElementTree as ET

root = ET.Element("painter")
root.set('version', '1.0')
linenum = 0
pointnum = 0

smpl_data = [[[20,40],(0,0,1,1)],[[10,50],(0,0,1,1)],[[78,89],(0,0,1,1)]]

while linenum <= len(smpl_data): #smpl_data change to self.lines
    elem_line = ET.SubElement(root,"line" + str(linenum), attrib={"r": "1", "g": "2", "b": "3", "a": "4"})
    print elem_line
    print elem_line.attrib.get("r")                       
    print elem_line.attrib.set("r", "smpl_data[linenum][2]")  
    # I get an attribute error: 'dict' object has no  attribute 'set'

È chiaramente mostrato nella documentazione però ...

http://docs.python.org/library/xml.etree.elementtree.html#xml.etree.elementtree.element.set

Grazie per l'aiuto.

È stato utile?

Soluzione

Stai chiamando get() e set() sul attrib membro del Element. attrib è un normale vecchio dizionario Python che non ha un set() funzione. La documentazione collegata è per il set() funzione sull'effettivo Element oggetto stesso.

Per impostare un valore in attrib membro che useresti:

elem_line.attrib['r'] = smpl_data[linenum][2]

Se vuoi usare il Element invece:

elem_line.get('r')
elem_line.set('r', smpl_data[linenum][2])
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top