Python ElementTree中的多个文本节点?HTML生成
我正在使用ElementTree来生成一些HTML代码,但遇到了一个问题:ElementTree并不把文本当作一个节点来存储,而是把它放在text
和tail
这两个属性里。这就造成了一个问题,如果我想生成需要多个文本节点的内容,比如:
<a>text1 <b>text2</b> text3 <b>text4</b> text5</a>
据我所知,似乎没有办法生成这样的内容——我是不是漏掉了什么?或者,有没有更好的方法可以在Python中快速简单地生成HTML?
1 个回答
14
要用 ElementTree
生成上面的字符串,你可以使用以下代码。这里的关键在于,text
是在下一个元素之前的第一段文本,而 tail
是在这个元素之后到下一个元素之间的所有文本。
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>