Не удается выгрузить или записать элемент ElementTree - PullRequest
6 голосов
/ 30 июня 2011

У меня проблема с выводом даже самых простых экземпляров Element (Tree).Если я попробую следующий код в Python 2.7.1

>>> from xml.etree.ElementTree import Element, SubElement, tostring
>>> root = Element('parent')
>>> child = Element('child')
>>> SubElement(root, child)
>>> tostring(root)

, я получу сообщение об ошибке:

TypeError: cannot serialize <Element 'root' at 0x9a7c7ec> (type Element)

Я, должно быть, что-то делаю не так, но документация ни на что не указываеточевидно.

Ответы [ 3 ]

9 голосов
/ 30 июня 2011

SubElement не принимает элемент в качестве второго параметра. API-документы дают подпись как

SubElement(parent, tag, attrib={}, **extra)

, т.е. вторым параметром является тег (то есть имя) подэлемента

ElementTree docs дать более подробную информацию

Чтобы добавить дочерний элемент, посмотрите метод добавления в Element, например

root.append(child)
5 голосов
/ 30 июня 2011

http://docs.python.org/library/xml.etree.elementtree.html#xml.etree.ElementTree.SubElement

Второй аргумент SubElement - это тег (str), а не Element, он сам создает экземпляр Element:

>>> SubElement(root, 'child')
0: <Element 'child' at 0x1f2dfb0>
>>> tostring(root)
1: '<parent><child /></parent>'
1 голос
/ 30 июня 2011
Второй параметр

SubElement - это String - имя тега, который вы хотите добавить в корневой элемент.Вы либо хотите append или insert, если имеете дело с Element s.

...