XML Datei - Layout anpassen?

Hallo zusammen :smile:

Ich brauche Hilfe dabei, das Layout einer XML-Datei anzupassen. Das Layout der Datei 1 muss an das der Datei 2 angeglichen werden, damit es von einem Backup-Programm gelesen werden kann. Wie stelle ich das am besten an? Die XML enthält ca. 1900 SMS, manuelles bearbeiten kommt deshalb eigentlich nicht in Frage…

Layout Datei 1:

+4915777777777Hey. bin zwar noch bis dienstag in FD, hab aber leider nicht soviel zeit bei dir vorbei zu schauen. werd dann immermal zwischendurch zeichnen u dir schicken. LG
20100126252448314

Layout Datei 2:

Ich weiß nicht, ob es auch mit Zeilenumbrüchen gehen würde.

http://android.riteshsahu.com/apps/sms-backup-restore“ Auf dieser Seite wird noch mehr erklärt, wie die XML aussehen sollte. Dort gibt es auch XSL und XSD Dateien, die wohl beim umformatieren helfen?

Vielen Dank für jede Hilfe!
Joshua

Hallo Joshua,

Ich weiß nicht, ob es auch mit Zeilenumbrüchen gehen würde.

Die sollten eigentlich keien Rolle spielen.

Dort gibt es auch XSL und XSD Dateien, die wohl beim
umformatieren helfen?

XSL ist das richtige Stichwort, damit lassen sich XML Daten in HTML oder andere XML Formate umwandeln. Das Beispiel auf der Seite dient aber auf den ersten Blick eher dazu die SMS als HTML Tabelle darzustellen.

Um deine Daten in das gewünschte Format zu bekommen müsste man ein geeignetes Stylesheet erstellen. Außerdem wird ein XSLT Processor benötigt (http://de.wikipedia.org/wiki/XSL_Transformation#XSLT…). Ich benutze i.d.R. Xalan (http://xml.apache.org/xalan-j/), weiß nicht ob die Benutzung für Nicht-Techniker so intuitiv ist, ein benutzerfreundlicheres Tool ist mir aber auch nicht bekannt.

Das XSL Stylesheet müsste in etwas so aussehen:

<?xml version="1.0" encoding="iso-8859-1"?>0

Gruß
Heavy

Hallo Heavy,

vielen Dank für deine Antwort, die Tipps, die Links und das Stylesheet.

Ich hab mich ein wenig eingelesen, ein wenig verstanden und dann für mich entschieden, dass ich besser die Finger von Xalan lasse, weil ich einfach gar keine Ahnung vom Programmieren und erst recht nicht Java habe… - und das auch für meine Zwecke zu weit führen würde.

Dennoch habe ich mich auf die Suche nach einem Tool gemacht, dass als XSLT-Processor fungiert. Nach langem Suchen bin ich auf ein Opensource JavaProgramm (was sonst) gestoßen, das genau das macht!

http://sourceforge.net/projects/jsimplex/

jSimpleX 3.1 bedient sich sehr einfach und gibt das gewünschte XML aus. Ich muss nur noch ein paar Änderungen am Stylesheet vornehmen, damit auch wirklich alle Informationen der Ursprungsdatei übernommen werden - das denke ich, sollte jedoch kein Problem darstellen.

Nochmals vielen Dank für das vorbereitete Stylesheet!
Joshua

Hallo Joshua7,

selbst programmieren kannst du nicht oder?

Wenn du willst, kann ich für dich die Transformation der XML-Dateien vornehmen, wenn du mir die Datei 1 schickst.

Ansonsten könnte ich am Wochenende wohl ein XSLT-Skript basteln, damit du das neue Format (Layout Datei 2) erhälst.

Schreib zurück!

Gruß m8080

Hallo Markus,

vielen Dank für dein Angebot!
Mittlerweile habe ich mithilfe des vorbereiteten Stylesheets von Heavy und dem Programm jSimpleX schon die XML Datei umformen können… selbst programmieren kann ich eigentlich nicht, aber das Verständnis reicht dann zumindest soweit, dass ich auch ein wenig am XSLT rumbasteln konnte…

Hat dann alles sehr gut geklappt soweit.
Trotzdem danke :smile:

Grüße, Joshua

Ja, habs dann auch schon bemerkt, dass Heavy schon geantwortet hat. Aber als ich antworten wollte, sah ich die Antworten alle nicht. -.-

Wenn es Probleme mit XML/XSLT gibt, kannst du mich jederzeit anschreiben. Dann hab ich hoffentlich früher Zeit. :wink:

Eigentlich bräuchtest du für diese Aufgabe auch gar kein jSimpleX, da die aktuellen Browser XSLT längst unterstützen. Aber nun gut.

Gruß markus80

Hallo,

benötigst Du hierbei immernoch Hilfe?

Wenn ja würde ich dies mit einem kleinen Tool machen. Dieses Tool guckt in ein Verzeinis mit deinen SMS-XML-Datein und erzeugt über ein XSLT-Processing den neuen Output. Solltest du hierbei Hilfe benötigen kann ich dir gerne ein Beispiel Xslt schicken.

Gruß,
Kristof

Hallo Kristof,

vielen Dank für dein Angebot. Hat alles schon geklappt :smile:
In den Antworten darüber habe ich beschrieben, wie ich es gemacht habe…

Grüße,
Joshua

Am einfachsten geht dies, Joshua, indem du eine XSLT-Transformation schreibst.

Wenn man XSLT kann, ist dies bei der gegebenen Struktur recht einfach (leider ist mein Stundensatz zu hoch, um dir hier zu helfen). Wenn nicht, solltest du dir jemanden suchen, der das kann, z.B. auf vWorker.com oder oDesk.com. Dort findest du jemanden für wenig Geld, der dir das Skript schreibt.

Konvertierung ist leider of ein Thema für Programmierung. In Deinem Fall würde NICHT xsl nehmen weil das zu umständlich ist (so finde ich).

Nimm’ Python oder wenn Du willst Ruby, VB Script oder sowas. Ich kenne jetzt nicht Deine Programmierkenntnisse und das würde etwas den Rahmen sprengen das hier zu erklären.

Schau Dir mal an wie man eine XML per Python einliest.
Die Python documentation liefer schon was: http://docs.python.org/library/xml.dom.minidom.html

Python selber (www.python.org) läßt sich unter Windows einfach installieren.

Notgedrungen mußt Du nachlesen wie man aus einer DOM Struktur die Daten herausholt.

Beim Rausschrieben würde ich die neue XML (Deine Zieldatei) einfach als Text rausschrieben und nicht etwa wieder eine DOM Struktur erzeugen:

redirecting print output to a file

oldstdout = sys.stdout
sys.stdout = open(„newfile.xml“, „w“)

protocol = 1234
print(„“„“„“ % (protocol, address)

usw.

print(„“„“„“)

sys.stdout.close()
sys.stdout = oldstdout

Leider kann ich Dir keine 5 Minuten Lösung anbieten aber mit ein wenig Programmierkenntnissen sollte man es in einem Tag erledigen können.

Hi, Joshua

hat sich sicher schon erledigt. Hast ja gute Antworten bekommen. Ich würde auch für XSL plädieren, z.B. kannst du dir das Buch von Michael Kay zur Brust nehmen. Lohnt sich.

Die Versprechen, dass man mit ein paar Klicks ein Problem löst, stimmen meist nicht, da eine komplexere Aufgabe in-sich Arbeit erfordert. Man kann Komplexität hinzufügen, d.h. man kann etwas umständlicher machen, als erforderlich. Noch einfacher, als mindestens erforderlich geht hingegen nicht.

Gruß

Rolf