开发者

Multiple text nodes in Python's ElementTree? HTML generation

开发者 https://www.devze.com 2023-01-05 08:23 出处:网络
I\'m using ElementTree to generate some HTML, but I\'ve run into the problem that ElementTree doesn\'t store text as a Node, but as the 开发者_如何学编程text and tail properties of Element. This is a

I'm using ElementTree to generate some HTML, but I've run into the problem that ElementTree doesn't store text as a Node, but as the 开发者_如何学编程text and tail properties of Element. This is a problem if I want to generate something that would require multiple text nodes, for example:

<a>text1 <b>text2</b> text3 <b>text4</b> text5</a>

As far as I can tell there is no way to generate this- am I missing something? Or, is there a better solution for quick and simple HTML generation in Python?


To generate the above string with ElementTree you can use the following code. The trick to this is that the text is the very first lot of text before the next element and the tail is all the text after the element up to the next element.

import xml.etree.ElementTree as ET
root = ET.Element("a")
root.text = 'text1 ' #First Text in the Element a
b = ET.SubElement(root, "b")
b.text = 'text2' #Text in the first b
b.tail = ' text3 ' #Text immediately after the first b but before the second
b = ET.SubElement(root, "b")
b.text = 'text4'
b.tail = ' text5'
print ET.tostring(root)
#This prints <a>text1 <b>text2</b> text3 <b>text4</b> text5</a>
0

精彩评论

暂无评论...
验证码 换一张
取 消