2013-10-23 17 views
6

na ryzyko zachorowania krzyknął za pytanie takie proste pytanie, ale zostały trałowania z internetu w poszukiwaniu odpowiedzi i tym konkretnym przypadku wydaje się być powszechnie unikać docs są niejednoznaczne:można xml.etree.ElementTree.write() wartości całkowite dla danego elementu?

Czy to możliwe, aby korzystać z xml .etree.ElementTree.write(), aby zapisać wartości nie będące ciągami w atrybucie elementu? zawsze dotrzesz:

TypeError: cannot serialize 0 (type int) 

gdy próbuję coś takiego:

root = ET.Element('Tasks') 
d = {'priority': 1, 'status': 0, 'name': 'new task', 'index': 0} 
d = ET.SubElement(root, 'Settings', attrib=d) 
tree = ET.ElementTree(root) 
tree.write('/tmp/xmlTest') 

Pracuję wokół niego kilka razy przez powtarzanie w ciągu odpowiedniego słownika i obracając wszystkie wartości w ciągi pierwszy, ale że nie czuje się dobrze i zanim znowu go spartaczę, chciałbym wiedzieć, jak należy to zrobić właściwie, aby nie przyzwyczaić się do złego nawyku. Więc każdy wgląd byłby bardzo doceniany.

Cheers, Frank

Odpowiedz

8

W przeciwieństwie do danych XML, XML atrybuty są teksty. http://www.w3schools.com/xml/xml_attributes.asp

Od ciebie zależy serializacja atrybutów na ciągi przed serializacją xml.

+4

Oczywiście, ponieważ jest to nauka rakietowa do serializowania typu integer. Dobra robota, Python! Jednak dzięki za odpowiedź, to było naprawdę pomocne :). – egelev