Python ElementTree中的多个文本节点?HTML生成

10 投票
1 回答
3691 浏览
提问于 2025-04-16 00:35

我正在使用ElementTree来生成一些HTML代码,但遇到了一个问题:ElementTree并不把文本当作一个节点来存储,而是把它放在texttail这两个属性里。这就造成了一个问题,如果我想生成需要多个文本节点的内容,比如:

<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>

撰写回答