Zum Inhalt springen

csv in xml umwandeln (xslt?)


schlumsch

Empfohlene Beiträge

Hallo allerseits,

ich habe eine Frage zu xslt. Ich möchte ein csv-file in ein xml umwandeln. dabei möchte ich in einem Zwischenschritt eine Prüfung einbauen, ob das csv-file einem bestimmten Format genügt und dannd ie Konvertierung durchführen. Für den Fall xml2xml tut dies xslt wenn ich das richtig sehe. Gibt es auch eine Möglochkeit für csv2xml? ... eventuell existiert dafür ja auch eine andere Technologie als xslt, jedenfalls brauche ich am Ende des Tages ein script welches ich laufen lassen kann.

Danke schon einmal, Gruß schlumsch

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ok, nun habe ich ein weiteres Problem. Die pure Übersetzung von csv in xml ist erstmal klar. Nun müsste ich allerdings zuvor noch eine Formatprüfung durchführen ob das cvs-file zu dem von mir später verwendeten Datenformat kompatibel ist.

Ich habe quasi ein csv in welchem jede Zeile einen abgeschlossenen Datensatz repräsentiert. An einer bestimmten Position der Zeile, z.b. Element 3, steht ein String welcher definiert wieviele Attribute der Datensatz haben darf und welche Bedeutung diese haben. Kann (wie?) ich vor der Umwandlung in xml eben dieses prüfen?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Mit xslt kommst du da nicht weiter. Am einfachsten geht sowas mit einem php/perl etc script. Willst du eine xml Datei erstellen oder das ganze direkt als xml ausgeben?

***Hässlichs mini script***

<?php

//Datei Zeilenweise einlesen

 $lines = file('foo.csv');

for($i=0;$i<count($lines);$i++){

  //Jede zeile in Felder zerlegen

  $lines[$i] = explode(',',$lines[$i]);

  //überprüfen ob die Anzahl an feldern stimmt

  if(count($lines[$i])!=3) Die("Fehler in CSV Datei");

}


echo "<root>";

for($i=0;$i<count($lines);$i++){

  echo "<name>{$lines[$i][0]}</name><age>{$lines[$i][1]}</age><sex>{$lines[$i][2]}</sex>";

}

echo "</root>";

?>
***Beispiel csv***
name, alter, geschlecht

Kurt, 27, m

Karla, 24, w
***Beispiel xml**
<root><name>name</name><age> alter</age><sex> geschlecht

</sex><name>Kurt</name><age> 27</age><sex> m

</sex><name>Karla</name><age> 24</age><sex> w</sex></root>

Link zu diesem Kommentar
Auf anderen Seiten teilen

Kann (wie?) ich vor der Umwandlung in xml eben dieses prüfen?

In CSV nicht, da CSV keine Typen kennt. Ich würde nach der Konvertierung (obwohl ich auch die Konvertierung von CSV nach XML etwas skeptisch sehe), die XML prüfen, ob sie einem entsprechenden Schema genügt, damit kannst Du dann auch Datentypen und -strukturen validieren

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich habe ein csv in welchem zum Beispiel eine Zeile so aussieht:

01|02|ObjektXYZ|03|04

daraus soll werden:

<ObjektXYZ>

<Bedeutung1>

<01>

</Bedeutung1>

<Bedeutung2>

<02>

</bedeutung2>

...

</ObjektXYZ>

Zusätzlich will ich noch vorher prüfen, wie viele Attribute das Objekt insg. hat und ob dies zulässig ist. (Ich habe also mehrere verschiedene Objekte mit unterschiedlichen Attributen etc.)

Mein resultierendes xml dient als Import für eine andere Applikation. Da ich nun allerdings nicht jedesmal wenn sich mein Auftraggeber zu einer Formatänderung entscheidet meine ganze Applikation umschreiben will, möchte ich diese Prüfung und xml-Erstellung der Applikation voraus laufen lassen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Da ich nun allerdings nicht jedesmal wenn sich mein Auftraggeber zu einer Formatänderung entscheidet meine ganze Applikation umschreiben will, möchte ich diese Prüfung und xml-Erstellung der Applikation voraus laufen lassen.

Was spricht dagegen auf Deine CSV das genannte Tool anzuwenden, die daraus resultierende XML mit XSLT in eine andere XML (passend für die Applikation) umzuwandeln und die XML Dateien mittels Schema zu validieren !?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ja das dachte ich auch schon und darauf wird es wohl hinauslaufen.

Als absoluter neuling in xslt muss ich da gleich nochmal nachfragen - mit xslt kann ich dann den von mir unten beschriebenen Sachverhalt umsetzen? Also zum Beispiel Anhand des 3ten Strings in einer Zeile überprüfen wie viele Strings die Zeile insgesammt hat und diese dann um weitere Elemente anreichern?

Link zu diesem Kommentar
Auf anderen Seiten teilen

mein neuester Wissensstand

Du sollst hier nicht irgendwelche Bruchstücke posten und darauf hoffen, dass Dir jemand diese Bruchstücke zusammensetzt, denn das ist Deine Aufgabe.

1. Du hast eine CSV (hierzu bitte ein Bsp).

2. Du hast dann aus dieser CSV eine XML mit Hilfe des Tools erstellt (hierzu auch Bsp erstellen).

3. Wie sieht diese XML aus?

aus 3 folgt dann eine Struktur und aufgrund folgt dann eine Prüfung und wie sieht diese Prüfung aus?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich glaube du hast mich da missverstanden. Ich wollte nicht das du/ihr mir den Link übersetzt. Ich wollte damit zum Ausdruck bringen, dass man wohl doch mit xslt 2.0 csv in xml übersetzen kann, das wars schon.

Genau das werde ich nun versuchen, wenn mir da jemand helfen will poste ich natürlich gerne mein csv-file *g* ;)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...