2017-01-25 11 views
0

Я пытаюсь добавить блок <Item> в родительский блок <Items>. Для того, чтобы получить, например:Сделайте один подэлемент узла другого

<Items> 
    <Item>...data...</Item> 
    <Item>...data...</Item> 
    <Item>...data...</Item> 
</Items> 

Вот то, что я до сих пор:

>>> from lxml.etree import Element 
>>> items=Element('Items') 
>>> item=Element('Item') 

Как я хотел бы добавить пункт под деталями? То, что я пытался сделать, это:

>>> SubElement(items, item) 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "lxml.etree.pyx", line 2935, in lxml.etree.SubElement (src/lxml/lxml.etree.c:67070) 
    File "apihelpers.pxi", line 175, in lxml.etree._makeSubElement (src/lxml/lxml.etree.c:15221) 
    File "apihelpers.pxi", line 1498, in lxml.etree._getNsTag (src/lxml/lxml.etree.c:27720) 
    File "apihelpers.pxi", line 1516, in lxml.etree.__getNsTag (src/lxml/lxml.etree.c:27870) 
    File "apihelpers.pxi", line 1393, in lxml.etree._utf8 (src/lxml/lxml.etree.c:26460) 
TypeError: Argument must be bytes or unicode, got '_Element' 
+0

@Selcuk - вот это. Спасибо. Вы можете оставить это как ответ, и я приму его. – David542

ответ

2

Вы можете использовать .append() метод Element class:

>>> from lxml.etree import Element, tostring 
>>> items = Element('Items') 
>>> item = Element('Item') 
>>> item.text = "foo" 
>>> items.append(item) 
>>> print(tostring(items, pretty_print=True)) 
<Items> 
    <Item>foo</Item> 
</Items>