Seite 1 von 1
' ' mit ElementTree
Verfasst: Sonntag 6. September 2009, 20:59
von HWK
ET wirft einen Fehler, wenn es eine HTML-Datei mit ' ' parst, da ' ' kein Standard-XML ist. Das ist bekannt und habe ich durch
Code: Alles auswählen
parser = ET.XMLParser()
parser.entity["nbsp"] = unichr(160)
gelöst. Beim Speichern der geänderten HTML-Datei möchte ich aber wieder ' ' haben. Bisher habe ich es so gelöst, dass ich in einen StringIO geschrieben habe und dort
durchgeführt habe. Das ist aber alles etwas umständlich. Gibt es keine elegantere Lösung?
MfG
HWK
Verfasst: Sonntag 6. September 2009, 21:38
von burli
Hab das gerade gestern gelesen. Man bräuchte eine Definition für in einer DTD. Weiß aber nicht mehr genau, wo ich das gelesen hab. Ich glaub, auf selfhtml
Gefunden
http://de.selfhtml.org/xml/regeln/allgemein.htm
Verfasst: Sonntag 6. September 2009, 21:56
von HWK
Danke für den Hinweis.
Ich habe das Problem mittlerweile aber anders gelöst. Ich wollte ' ', da IE unichr(160) im Gegensatz zu Firefox nicht korrekt dargestellt hat. Ich habe die HTML-Datei jetzt aber mit Encoding 'ascii' statt 'cp1252' gespeichert. Danach funktioniert es wieder, da jetzt ' ' verwendet wird.
MfG
HWK
Verfasst: Sonntag 6. September 2009, 23:00
von Darii
HWK hat geschrieben:Ich habe die HTML-Datei jetzt aber mit Encoding 'ascii' statt 'cp1252' gespeichert. Danach funktioniert es wieder, da jetzt ' ' verwendet wird.
Nur gut, dass ACSII nur 128 Zeichen hat.

Verwende lieber Unicode(utf8), dann hast du keine Probleme mehr mit irgendwelchen Zeichen die nicht in der Kodierung enthalten sind.
Verfasst: Montag 7. September 2009, 12:03
von HWK
Es liegt nicht an Zeichen, die nicht in der Codierung vorhanden sind. Firefox stellt die Datei z.B. auch mit cp1252 vernünftig dar.
Das Problem lag eher hieran:
Code: Alles auswählen
<?xml version='1.0' encoding='cp1252'?>
<html>
<head>
<meta content="text/html; charset=ascii" http-equiv="Content-Type" />
ET setzt das Encoding für xml. IE verwendet aber offensichtlich im Gegensatz zu Firefox das Encoding im Meta-Tag, das durch die Ursprungs-HTML-Datei als ascii vorgegeben ist. Das einfachste ist also wohl, mit ET auch ascii zu verwenden. Und die Zeichen ab 128 werden ja als Entity dargestellt.
MfG
HWK