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?

War es hilfreich?

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>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top