Più nodi di testo in ElementTree di Python? generazione HTML
-
01-10-2019 - |
Domanda
sto usando ElementTree per generare un po 'di HTML, ma ho incontrato il problema che ElementTree non memorizza il testo come un nodo, ma, come le proprietà text
e tail
di Element
. Questo è un problema se voglio generare qualcosa che richiederebbe più nodi di testo, ad esempio:
<a>text1 <b>text2</b> text3 <b>text4</b> text5</a>
Per quanto ne so non c'è modo di generare questo- mi sto perdendo qualcosa? Oppure, c'è una soluzione migliore per la generazione di HTML semplice e veloce in Python?
Soluzione
Per generare la stringa di cui sopra con ElementTree
è possibile utilizzare il seguente codice. Il trucco per questo è che il text
è il primo sacco di testo prima dell'elemento successivo e il tail
è tutto il testo dopo l'elemento fino all'elemento successivo.
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>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow