Ich habe verschiedene XML-Dateien:
Einmal korrekte XMLs, d.h. mit Header und allem drum und dran. <-- Keine Probleme.
Zum Anderen habe ich XMLs nur mit "Inhalt", also ohne Header drumrum. <-- Hierum gehts.
Die XMLs, welche keinen Header besitzen werden in Python mittels Template mit einem Header versehen.
Diese generierten XMLs möchte ich durch den lxml parser jagen. Hierzu erstelle ich mir aus dem Inhalt ein StringIO-Objekt.
Mein Problem ist, dass diese so generierten XMLs ja jetzt keinen Pfad im Verzeichnis besitzen, sondern einfach irgendwo in der Pythonwelt als Objekte herumschwirren...
Wenn nun ein XInclude darauf ausgeführt werden soll, können die einzubindenden Dateien nicht gefunden werden, da diese nur eine relative Pfadangabe besitzen.
Jetzt meine Frage:
Ist es möglich dem StringIO-Objekt einen Pfad im Dateisystem zuzuweisen? Sozusagen ihm vorgaukeln, dass es unter z.B. C:/test/StringIO.xml liegt?
Ich habe es im Moment so gelöst, dass ich mir eine temporäre Datei generieren lasse, diese dann parse und am schluss die Datei wieder lösche, aber das ist finde ich nicht sonderlich schön. Oder ist das etwar doch die einzige Möglichkeit?
Nochmal n bischen genauer:
Ein StringIO-Objekt hält den Inhalt einer XML Datei, die unter anderem auch ein XInclude-Element enthält:
Code: Alles auswählen
<xi:include href="../xzy/includeThis.xml" parse="xml"/>
Grüße
m0ps