2009-07-01 5 views
5

Ich versuche, Pythons ElementTree zu verwenden, um eine XHTML-Datei zu generieren.Wie erstellt man "virtuelle Wurzel" mit Pythons ElementTree?

Die ElementTree.Element() lässt mich jedoch nur ein einzelnes Tag (z. B. HTML) erstellen. Ich muss eine Art von virtueller Wurzel oder was auch immer es heißt, so dass ich die verschiedenen, DOCTYPES usw. setzen kann

Wie mache ich das? Dank

Antwort

7

Ich weiß nicht, ob es einen besseren Weg, aber ich habe dies getan gesehen:

Erstellen Sie das Basisdokument als String:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html></html> 

Dann die Zeichenfolge analysieren Ihre starten neues Dokument.

+2

+1, bestätigt, kann elementtree nicht hinzufügen/erstellen Doctype, so ist diese Lösung (aber kann es analysieren!) so sauber wie es nur geht. –

0

Ich habe/hatte das gleiche Problem. Wenn ich ein Dokument analysiere und es wieder schreibe, ist die Doctype-Defention nicht mehr da. aber ich fand eine Lösung gerade in der Dokumentation:

link text

Speichern von HTML-Dateien #

Um eine einfache HTML-Datei zu speichern, nur den Baum auszuschreiben.

tree.write("outfile.htm") 

Das funktioniert gut, solange die Datei-Tags keine eingebetteten Script und Style containg.

Wenn Sie möchten, können Sie eine DTD Verweis auf den Anfang der Datei hinzufügen:

file = open("outfile.htm", "w") 
file.write(DTD + "\n") 
tree.write(file) 
file.close() 
Verwandte Themen