Nick
Nick

Reputation: 10143

How to create Element with text and tags?

I has create next XML:

item = E('p') # <p/>

Now I need to put next content into it:

text = "some <bold>text</bold>"

# item.append(text) 
# TypeError: Argument 'element' has incorrect type (expected lxml.etree._Element, got str)

# item.append(fromstring(text)) 
# lxml.etree.XMLSyntaxError: Start tag expected, '<' not found, line 1, column 1

I need as result next XML node:

<p>some <bold>text</bold></p>

How to do it correctly?

Upvotes: 4

Views: 8999

Answers (1)

Maurice Meyer
Maurice Meyer

Reputation: 18126

You need to create sub-elements:

from lxml import etree

root = etree.Element("p")
root.text = 'some'

bold = etree.SubElement(root, 'bold')
bold.text = 'text'

print (etree.tostring(root))

Returns:

<p>some<bold>text</bold></p>

Upvotes: 6

Related Questions