Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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

csv2xml - A csv to xml converter

Sollte damit doch eigentlich funktionieren...

oder hast du spezielle Anforderungen?

Ja nee, spezielle Anforderungen habe ich nicht, nur eben das ich ein script brauche welches ich auf meinem server laufen lassen kann. Sprich ein Prgoramm, sei es auch Freeware, welches ich starten muss bringt mir nichts

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?

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>

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

Die überprufung musst du dann halt in die erste for schleife packen.

Was soll das denn für ein string sein?

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.

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 !?

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?

steht das entscheidende Objekt immer an der gleichen stelle(z.B immer der dritte Eintrag? Hast du mit Erfahrung mit Scripts?

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?

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* ;)

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.