Komplexes XML-Problem

  • Hallo,


    hab jetzt lange herum probiert aber ich bekomme es anscheinend nicht hin.
    Hab hier eine ziemlich große XML-Datei mit einer sehr komplexen Struktur.
    Es existieren zudem mehrere Schemadateien (für die einzelnen Bereiche der XML-Datei - Header, Body, Footer etc.) und Untertabellen ebenfalls im XML-Format.
    Soweit ist mir alles klar und wenn ich auf die Daten schaue kann mein Kopf auch alle erdenklichen Verbindungen herstellen und ich verstehe wie was zusammen gehört.


    Leider bekomme ich die Datei nicht in eine relationale Datenbank wie SQL Server, mySQL oder Access importiert. Programatisch scheitert das daran, dass ich nicht weiß wie ich mehrere Schemen mit einer XML-Datei "verquicken" kann so dass das .NET-Framework versteht wie es die Tabellen im Dataset anzulegen hat. Ein Laden der XML-Datei ohne Schema scheitert an den verschiedensten Problemen.


    Im Access sieht es zunächst alles ganz toll aus. Ich erstelle eine neue Datenbank und importiere dann die XML-Datei - auch hier redet zwar die Hilfe von Schemen, beim Importieren kann man allerdings kein Schema für die XML-Datei auswählen (nur Stylesheets). Es werden auch alle Tabellen erstellt, teilweise mit verschiedenen Spalten - oberflächlich betrachtet sieht das auch richtig aus.
    In den erstellen Tabellen sind auch Datensätze vorhanden, nur sind alles Spalten leer - es scheint also so, dass Access ohne das passende Schema nicht weiß wo die Werte für die Spalten herkommen sollen.


    XMLSpy habe ich ausprobiert, bekomme es aber nicht hin mehrere Schemen zu einem Schema zusammenzufassen und an die XML-Datei zu hängen.
    Zudem ist das Programm elendig langsam und teuer - der Export klappt ebenfalls nicht wie ich mir das vorstelle. Würde gerne darauf verzichten ...


    Hab jetzt schon etliches an Literatur durchgearbeitet aber ich bekomme es nicht hin die XML-Datei zu importieren.


    Kann mir jemand helfen? Die Datei und alles was dazu gehört kann ich zuschicken - ist allerdings vertraulich. Die Dokumentation der Datei hilft mir leider auch nicht weiter weil dort nur alle Felder beschrieben werden.

    -> Tristan @ Work <-
    --

  • Puh. Bin da keine große Hilfe, aber sind denn die Schemata korrekt in der XML Datei eingebettet (z.B. unterschiedliche Namensräume etc.)? Dann müsste man doch einfach die Schemata an die richtigen Stellen legen und nur die XML Datei importieren – den Rest müsste der XML Parser machen. Oder der kann eben nur ein Schema.

  • Wie meinst du das mit dem an die richtige Stelle legen? Die Schemas sind korrekt soweit ich das sehen kann. Die XML-Datei scheint diese ab nicht zu benutzen bzw. der entsprechende Parser - immerhin beschweren sich ja einige Programme auch.
    Wenn ich dann per XMLSpy die Schemen hinzufüge, ändert er die XML-Datei und behauptet anschließend alles ist toll. Jegliche andere Programme verzweifeln aber nach wie vor.
    Ich weiß ja im Prinzip wofür das alles gut ist aber so irgendwie erschließt sich mir nicht wie man die Dinger "laden" soll bzw. was es heißt eine XML-Datei zu importieren.


    In C# wollte ich einfach:


    DataSet ds = new DataSet ();
    ds.ReadXMLSchema (blasülz);
    ds.ReadXML (blasülz);


    machen um dann alle Tabellen automatisch vom Parser erstellen und füllen zu lassen aber ReadXMLSchema läßt nur ein Schema zu und ich hab ja jeweils ein Schema für den Kopf, den Body etc. - folgerichtig stolpert das Aufrufen von ReadXML auch über irgendwelche doppelt angegebenen Gruppen weil einige Bezeichner der "Zweige" genauso heißen wie die Obergruppe.


    Ich nehme mal an, dass das Schema hier genau das Problem ist - ohne ein richtiges Schema weiß der Parser nicht, dass der Zweig eigentlich eine Verknüpfung mit einer anderen Gruppe darstellt etc.


    Ich wünschte echt, es gäbe da so ein XML-Profi zum ausleihen - Bücher und das Internet haben mir bis jetzt nicht wirklich weitergebracht und das obwohl ich mich nicht gerade als Anfänger bezeichnen würde. Hab mit (leichterem XML) auch schon eine Menge gemacht aber dieser komplexe XML-Katalog um den es jetzt geht, erschließt sich mir absolut nicht.

    -> Tristan @ Work <-
    --

  • Dumme Frage, aber die Schmata müssen doch innerhalb der XML Datei bereits referenziert sein? Ansonsten geht nur ein Schema und Du kannst nicht mehrere Schmata haben, weil ja sonst doch Doppeldeutigkeiten auftreten können. Woher soll der Parser wissen, wann welches Schema greift? Das macht man innerhalb der XML Datei (über Namensräume).


    Du hast eine XML Datei mit Elementen und Daten und ein Haufen an Schema Dateien, aber die XML Datei kennt kein einziges Schema?


    Habe ich jetzt einen :gpaul: ? Denkst Du nur, dass alles passt (also interpretierts Du mehr rein als da steht) oder weisst Du dass alles passt? Ich bin mir recht sicher, dass Deine XML Datei einfach nicht korrekt ist und noch um Namensräume für die jeweiligen Schemata angreichert werden muss bevor es durch einen Parser kann.

  • Nee sind nicht referenziert und ich hab ehrlich gesagt auch keine Ahnung wie ich das anstellen soll. XMLSpy tut alles irgendwie zusammenkopieren und schreibt es dann als Referenz rein, wenn ich mir das Schema anschaue, enthält es aber lauter Lücken und ist nutzlos. Das muss auch so und ohne XMLSpy gehen - die können ja nicht davon ausgehen, dass jeder das Geld für XMLSpy hat.


    Du hast keinen :gehirnpaul: es ist tatsächlich so und laut Beschreibung gehören diese Schemas zu der großen XML-Datei. Wie man sie aber verwenden soll steht da nicht, NameSpaces etc. stimmen zwischen Schematas und XML-Datei soweit ich es überblicken kann überein, im Schema-Designer vom VisualStudio sieht auch alles logisch aus. Trotzdem ergibt das alles irgendwie keinen Sinn :(

    -> Tristan @ Work <-
    --

  • Die müssen in der XML Datei referenziert werden und jedes Schema braucht einen eigenen Namensraum; außer die Schemata überlappen nicht. Sonst ist das einfach nicht machbar, meiner Meinung nach.


    Liegt es in Deiner Macht aus den Schemata ein Schema zu machen? Wenn nicht, dann mach ein weiteres Schema, welches die anderen alle importiert. Dieses kannst Du dann ganz normal übergeben. Beider unter der Vorraussetzung, dass sich die Schemata nicht überlappen; was aber leider wahrscheinlich ist. Wenn sich die Biester überlappen, kannst Du zwar einzelne Elemente umdefinieren oder ein Schema bevorzugen, aber die Information des anderen Schema bezüglich des Elements geht natürlich verloren.

  • Wenn ich Dich richtig verstehe, willst Du die XML-Datei in eine Datenbank importieren? Ich hab mich damit noch nicht intensiv beschaeftigt, aber Sybase macht mit den XML-Features des Adaptive Server Enterprise ziemlich viel Werbung. Fuer Linux gibts den kostenlos zum Runterladen, vielleicht ist das ja nen Versuch wert.

  • Microsoft macht beim neuen SQL-Server genau das gleiche, trotzdem scheitern alle Importroutinen an dem gleichen Problem :( Einzig mit Access bekomme ich die Datei komplett imporiert, zumindest in die richtigen Tabellen - nur sind die Datensätze die vorhanden sind allesamt leer. Andere Microsoft-Tools melden, dass einer Struktur mit dem Namen XYZ nicht erneut in der untergeordneten Operation genannt werden dürfen. Beim Versuch das Schema zu lesen welches laut Dokumentation das Hauptschema sein soll, kommt die Meldung das eine der definierten Schlüssesreferenzen leer ist was aber eigentlich nicht der Fall ist.


    Wenn ich nicht wüsste, dass andere Leute das Zeug importiert bekommen, würde ich ja glatt behaupten das Schema ist kaputt.
    Wenn ich es allerdings mit XMLSpy überprüfe ist es sowohl valid als auch well-formated, lade ich es in MapForce, Visual Studio etc. kommt es zu oben genannten Fehler.

    -> Tristan @ Work <-
    --

  • Zitat

    Wenn ich nicht wüsste, dass andere Leute das Zeug importiert bekommen, würde ich ja glatt behaupten das Schema ist kaputt.


    Sicher, das andere das einfach so importiert bekommen? Gerade im "professionellen" Bereich neigen die Leute dazu die abenteuerlichsten Frickellösungen zusammenzuschrauben (weil sie vorher vielleicht was zugesichert haben), ehe sie zugeben, dass das nicht geht, und dass man vielleicht woanders was ändern sollte.


    Fragen kannst du die anderen vermutlich nicht, wie sie das machen?

    "That's not a hair question. I'm sorry." - 01/31/07 - Never forget!

  • Da es für einen großen Kreis von Firmen in dieser Form verfügbar ist und von einer staatlichen Stelle kommt, sollte man eigentlich annehmen das es importierbar ist.
    Die anderen Firmen Fragen geht leider nicht - wer verrät schon gerne Firmengeheimnisse, wenngleich das Problem ja auch nicht wirklich ein Geheimnis ist.

    -> Tristan @ Work <-
    --

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!