Wie kann ich codieren von xml-Dateien zu xfdl (base64-gzip)?
Vor dem Lesen etwas anderes, nehmen Sie sich bitte Zeit und Lesen Sie die original-thread.
Überblick:.xfdl-Datei ist gzipped .xml-Datei, die wurde dann in base64 codiert. Ich wünschte, zu de-Kodieren .xfdl in xml, was kann ich dann ändern und dann neu codieren wieder in eine .xfdl-Datei.
xfdl > xml.gz > xml > xml.gz > xfdl
Ich in der Lage gewesen zu nehmen .xfdl-Datei und de-codieren von base64 mit uudeview:
uudeview -i yourform.xfdl
Dann decommpressed es mit 'gunzip'
gunzip -S "" < UNKNOWN.001 > yourform-unpacked.xml
Den erstellten xml-Datei ist 100% lesbar und sieht wunderbar aus. Ohne änderung der xml dann, ich sollte in der Lage sein zu re-komprimieren mit gzip:
gzip yourform-unpacked.xml
Dann re-kodiert in base64 -:
base64 -e yourform-unpacked.xml.gz yourform_reencoded.xfdl
Wenn mein denken ist korrekt, die original-Datei und die re-codierte Datei gleich sein sollte. Wenn ich yourform.xfdl und yourform_reencoded.xfdl in beyond compare, aber Sie nicht übereinstimmen. Auch die original-Datei angezeigt werden kann, in eine http://www.grants.gov/help/download_software.jsp#pureedge">.xfdl-viewer. Der viewer sagt, dass die re-codiert xfdl ist nicht lesbar.
Habe ich auch schon versucht uuenview zu re-codieren base64, es produziert auch die gleichen Ergebnisse. Jede Hilfe würde geschätzt werden.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Soweit ich weiß, können Sie nicht finden, der Grad der Komprimierung einer bereits komprimierten Datei. Wenn Sie die Komprimierung der Datei können Sie angeben, der Grad der Komprimierung mit -#, wobei # von 1 bis 9 (1 ist die Schnellste Komprimierung und 9 die meisten komprimierten Datei). In der Praxis sollte man sich nie vergleichen eine komprimierte Datei mit der eine, die extrahiert wurden und stärker komprimiert, leichte Abweichungen können leicht zuschneiden. In deinem Fall würde ich vergleichen Sie die base64-codierte Versionen statt der gezippten Versionen.
Überprüfen Sie diese heraus:
http://www.ourada.org/blog/archives/375
http://www.ourada.org/blog/archives/390
Sind Sie in Python, nicht Ruby, aber das sollte man ziemlich in der Nähe.
Und der Algorithmus ist eigentlich für Dateien mit header " application/x-xfdl;content-encoding="asc-gzip" - "anstelle von" application/vnd.xfdl; content-encoding="base64-gzip"'
Aber die gute Nachricht ist, dass PureEdge (aka IBM Lotus Forms) wird geöffnet, dass das format kein problem.
Dann um das ganze abzurunden, hier eine base64-gzip decodieren (in Python) so können Sie die vollständigen round-trip:
Habe ich diese in Java mit Hilfe der Base64-Klasse von http://iharder.net/base64.
Habe ich gearbeitet, auf eine Anwendung zu tun-Formular-manipulation in Java. Ich Dekodiere die Datei, erstellen Sie ein DOM-Dokument aus der XML dann schreiben Sie es zurück in eine Datei.
Mein code in Java zum Lesen der Datei sieht wie folgt aus:
Mein code in java sieht aus wie diese zu schreiben, die Datei auf der Festplatte:
Hoffe, das hilft.
Ich habe an etwas gearbeitet, und diese Arbeit sollte für php. Müssen Sie eine beschreibbare tmp-Ordner und die php-Datei benannt werden example.php!
Müssen Sie die folgende Zeile am Anfang des XFDL-Datei:
application/vnd.xfdl; content-encoding="base64-gzip"
Nachdem Sie erzeugt die base64-codierte Datei, öffnen Sie Sie in einem Texteditor und fügen Sie die Zeile oben in der ersten Zeile. Sicherstellen, dass die base64 ' ed block beginnt am Anfang der zweiten Zeile.
Speichern Sie es und versuchen Sie es im Viewer! Wenn es dann immer noch nicht funktioniert, kann es sein, dass die änderungen, die vorgenommen wurden, um die XML-machte es nicht kompatibel in irgendeiner Weise. In diesem Fall, nachdem die XML geändert wurde, aber bevor es wurde gzipped und base64-codiert ist, speichern Sie es mit einer .xfdl Datei-Erweiterung und öffnen Sie es mit der Viewer-tool. Der Betrachter soll in der Lage sein, zu analysieren und anzeigen, die nicht komprimierte /nicht-codierte Datei, wenn Sie es in einem gültigen XFDL-format.
Verschiedenen Implementierungen des gzip-Algorithmus produziert immer etwas anders, aber dennoch richtig-Dateien, auch die Stärke der Komprimierung der original-Datei unterscheidet dann, was Sie laufen Sie auf.
gzip wird, setzen Sie den Dateinamen in den header der Datei, so dass eine Gzip-Datei in der Länge variieren je nach den Dateinamen der unkomprimierten Datei.
Wenn gzip wirkt auf einen Strom, so wird der Dateiname weggelassen wird, und die Datei ist ein wenig kürzer, so sollten die folgenden arbeiten:
gzip yourform-unpacked.xml.gz
Dann re-kodiert in base64 -:
base64 -e yourform-unpacked.xml.gz yourform_reencoded.xfdl
vielleicht dies erzeugt eine Datei, die die gleiche Länge
Interessant, ich werde give it a shot. Die Variationen sind nicht leicht, aber. Die neu kodierte Datei länger ist und beim Vergleich der binären die vor und nach, die Daten kaum Spiele überhaupt.
Vor (die ersten drei Zeilen)
Nach (die ersten drei Zeilen):
Wie Sie sehen können
H4SI
übereinstimmen, dann nach, dass es ein Höllenlärm.