2009-07-01 13 views
5

Próbuję użyć ElementTree Pythona do wygenerowania pliku XHTML.Jak utworzyć "wirtualny root" z ElementTree w Pythonie?

Jednak ElementTree.Element() pozwala mi tylko utworzyć pojedynczy tag (np. HTML). Potrzebuję utworzyć coś w rodzaju wirtualnego katalogu głównego lub jakkolwiek to się nazywa, aby móc umieścić różne, DOCTYPES itp.

Jak to zrobić? Dzięki

Odpowiedz

7

Nie wiem, czy jest jakiś lepszy sposób, ale widziałem to zrobić:

Tworzenie dokumentu bazowego jako wyrażenie:

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

następnie zanalizować, że ciąg, aby rozpocząć nowy dokument.

+2

+1, potwierdził, elementtree nie można dodać/tworzyć doctype, więc to rozwiązanie jest (ale można go analizować!) tak czysty, jak to tylko możliwe. –

0

Mam/miałem ten sam problem. kiedy parsuję dokument i ponownie go piszę, nie ma już obrony przed doktryną. Ale znalazłem rozwiązanie przeglądania dokumentacji:

link text

zapisywania plików HTML #

Aby zapisać zwykły plik HTML, wystarczy napisać na drzewo.

tree.write("outfile.htm") 

Działa to dobrze, dopóki plik nie zawierajacego żadnych wbudowanych SCRIPT lub STYLE tagów.

Jeśli chcesz, możesz dodać odwołanie DTD do początku pliku:

file = open("outfile.htm", "w") 
file.write(DTD + "\n") 
tree.write(file) 
file.close() 
Powiązane problemy