Несколько текстовых узлов в ElementTree Python? Поколение HTML

Я использую ElementTree для генерации некоторого HTML, но я столкнулся с проблемой, что ElementTree не хранит текст как Узел, но как text и tail свойства Element. Это - проблема, если бы я хочу генерировать что-то, что потребовало бы нескольких текстовых узлов, например:

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

Насколько я могу сказать, что нет никакого способа генерировать это - я пропускаю что-то? Или, есть ли лучшее решение для быстрого и простого поколения HTML в Python?

9
задан Rob Lourens 29 June 2010 в 10:47
поделиться

1 ответ

Чтобы сгенерировать указанную выше строку с помощью ElementTree , вы можете использовать следующий код. Уловка в том, что текст - это самая первая партия текста перед следующим элементом, а хвост - это весь текст после элемента до следующего элемента.

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>
12
ответ дан 2 November 2019 в 23:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: