Die .set () -Methode befindet sich nicht in der XML.etree -Bibliothek für Python?
Frage
Arbeiten beim Erstellen einer XML -Datei mit einigen Daten mithilfe von Python. Ich versuche, Werte im Wörterbuch auf Daten in der Liste festzulegen. Ich werde mehrere Zeilen erstellen, deshalb verweist ich auf jeden Wert auf diese Weise. Danke Leute. Hier ist mein Code:
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'
Es wird in der Dokumentation jedoch deutlich gezeigt ...
http://docs.python.org/library/xml.etree.elementtree.html#xml.etree.elementtree.element.set
Danke für die Hilfe.
Lösung
Du rufst an get()
und set()
auf der attrib
Mitglied von Element
. attrib
ist ein regelmäßiges altes Python -Wörterbuch, das keine hat set()
Funktion. Die von Ihnen verlinkte Dokumentation ist für die set()
Funktion auf der tatsächlichen Funktion Element
Objekt selbst.
Einen Wert in festlegen attrib
Mitglied, das Sie verwenden würden:
elem_line.attrib['r'] = smpl_data[linenum][2]
Wenn Sie das verwenden möchten Element
stattdessen:
elem_line.get('r')
elem_line.set('r', smpl_data[linenum][2])