Mehrere Textknoten in Python ElementTree? HTML-Generierung
-
01-10-2019 - |
Frage
Ich verwende ElementTree einige HTML zu generieren, aber ich habe in das Problem führen, dass ElementTree nicht speichert Text als Knoten, sondern als die text
und tail
Eigenschaften von Element
. Dies ist ein Problem, wenn ich etwas erzeugen will, die mehrere Textknoten, zum Beispiel erfordern würden:
<a>text1 <b>text2</b> text3 <b>text4</b> text5</a>
Soweit ich sagen kann, es gibt keine Möglichkeit this- zu erzeugen bin ich etwas fehlt? Oder gibt es eine bessere Lösung für die schnelle und einfache HTML-Generierung in Python?
Lösung
Um die obige Zeichenfolge mit ElementTree
erzeugen Sie den folgenden Code verwenden können. Der Trick dabei ist, dass die text
ist das erste viel Text vor dem nächsten Element und das tail
ist der gesamte Text nach dem Element zum nächsten Element nach oben.
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>