Hi,
ich verwende den XMLGenerator um XML Dateien zu erzeugen. Allerdings wird das xml komplett ohne Zeilenumbrüche ausgegeben. Weiß jemand wie man hier Zeilenumbrüche in das XML bekommt? Es muss nicht mal schön eingrückt sein oder so, nur ein paar Umbrüche zur besseren Lesbarkeit im Texteditor. Eine andere Pythonklasse geht auch nicht, weil die Datei zu groß ist, um sie komplett im Speicher zu erzeugen.
Vielen Dank.
newline in XMLGenerator
@Hazzard: Kannst Du nicht einfach an den Stellen wo Du Zeilenumbrüche haben möchtest welche mit `characters()` einfügen‽
@Hazzard: Du mußt halt entsprechende `characters` einfügen. Natürlich kannst Du auch Monkey-Patchen:
Code: Alles auswählen
XMLGenerator.endElement = lambda self, name: self._write(u'</%s>\n' % name)
XMLGenerator.endElementNS = lambda self, name, qname: self._write(u'</%s>\n' % self._qname(name))
Du kannst die Formatierung von BeautifulSoup verwenden:
Dann brauchst du dich nicht manuell um das Einfügen der Zeilenumbrüche zu kümmern und bekommst gleich noch eine übersichtliche Einrückung dazu.
Code: Alles auswählen
from bs4 import BeautifulStoneSoup
print BeautifulSoup('<xml><hi></hi></xml>', features='xml').prettify()
@Boa: Und wie soll das funktionieren ohne das XML, das zu gross für den Hauptspeicher ist, in den Hauptspeicher zu lesen?
Ich kann es bei mir nur schwer ausprobieren da mein Arbeitsspeicher zu groß ist, aber wird dabei nicht einfach die Auslagerungsdatei/swap/virtueller Arbeitsspeicher verwendet?BlackJack hat geschrieben:@Boa: Und wie soll das funktionieren ohne das XML, das zu gross für den Hauptspeicher ist, in den Hauptspeicher zu lesen?
- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
Selbst wenn die Swap Kapazitaeten gross genug waeren, heisst das trotzdem, dass statt Speicher SSDs oder Festplatten benutzt werden mit Zugriffszeiten die Groessenordnungen langsamer sind.
Michael Markert ❖ PEP 8 Übersetzung ❖ Tutorial Übersetzung (3.x) ⇒ Online-Version (Python 3.3) ❖ Deutscher Python-Insider ❖ Projekte
@Boa: Schön das *Dein* Arbeitsspeicher zu gross ist, aber es soll auch gerüchteweise Rechner geben die kein 64-Bit-System und Terabyte an RAM haben. Ich denke mal der OP kennt die Grenzen seiner Hardware wenn er sagt das geht nicht.
Hmm, na war nur ein Vorschlag. Ob es klappt kann man ja einfach ausprobieren. Ggf. ist die Zeichenkette wenn sie einmal als Datei vorliegt auch klein genug im Gegensatz zur Representation die mit XMLGenerator erzeugt wird. Ansonsten könnte man auch einfach den swap Platz vergößern.
@cofi: Es wurde nicht gesagt, dass Anforderungen an die Geschwindigkeit bestehen.
@cofi: Es wurde nicht gesagt, dass Anforderungen an die Geschwindigkeit bestehen.
@Boa: Es gibt Netbooks, es gibt Embedded Systeme, …, man kann nicht einfach überall Speicher vergrössern. Versuch das mal bei einem Raspberry Pi mit 512 MiB RAM und einer SD-Karte oder externem Massenspeicher der per USB angebunden ist. Da wirst Du mit Swap keine Freude haben. Auch wenn Geschwindigkeit nicht erwähnt wurde kann man damit nicht argumentieren, denn das wird auf jeden Fall *unbrauchbar* langsam.