Announcement

Collapse
No announcement yet.

Klassen aus XML erstellen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Klassen aus XML erstellen

    Hallo,

    ich bin neu hier im Forum und habe bis auf ein paar grundlegende Sachen bisher nicht in C++ gearbeitet. Ich habe jetzt ein etwas exotisches Problem und hoffe hier kann mir jemand helfen.

    Die Situation ist wie folgt: Ich muss eine Gruppe von Klassen mit einem eigene XML-Parser in eine XML-Datei schreiben und das Ergebnis dann wieder einlesen.

    Gibt es eine Möglichkeit die Attribute einer Klasse auszulesen und dann alle Attribute mit ihren Bezeichnungen anzusprechen, damit ich sie in die XML-Datei übertragen kann? Alle Klassen leiten sich von einer Elternklasse ab, besitzen aber zum Teil zusätzliche Attribute, welche ich natürlich auch erfassen muss.
    Ich stelle mir das etwas in der Richtung vor, dass ich die Attribute zum Beispiel als Liste erhalte, aus der der Name des Attributs und der Wert als String gelesen werden können.

    Das Ganze muss dann auch noch in die andere Richtung erfolgen, da habe ich das nächste Problem; eine XML-Struktur als String auslesen ist ja kein Problem, doch wie komme ich mit den Informationen, welche als String vorliegen, jetzt wieder an die Klassen? Spricht kann ich mit dem Namen einer Klasse (als String vorliegend) ein neues Objekt der Klasse erzeugen und mit den Namen der zugehörigen Attribute die Attribute der Klasse erzeugen lassen?

    Ich hoffe das war einigermaßen aussagekräftig und ihr könnt mir helfen. Ich habe schon alle anderen Möglichkeiten, die mir eingefallen sind ausgeschöpft; google, MSDN und eine Reihe von Fachbüchern hab ich gewälzt und keinen Erfolg gehabt...

  • #2
    Nicht, wenn es diese Klassen nicht schon gibt. Ansonsten kannst du eu XML-Datei parsen, eine Instanz der Klasse anlegen und die Attribute den Properties zuordenen
    Christian

    Comment


    • #3
      Also muss ich mir per Hand raussuchen welche Klasse genau in der XML vorliegt? (z.B. Switch-Case?)

      Mal als Beispiel für die Struktur meines Problems:
      Ich habe eine Containerklasse "Korb" mit bestimmten Attributen und einer Liste von Enthaltenen Objekten der Oberklasse "Obst". Von "Obst" gibt es Spezialisierungen "Apfel", "Birne".

      Wie kann ich die Klasse "Korb" wieder deserialisieren? Die Attribute kriege ich problemlos wieder raus, die Liste mit dem "Obst" macht mir hier Probleme. Klar könnte ich jetzt den Parser nutzen und einfach alle möglichen Klassen ("Apfel",...) testen und sehen, bei welchem kein Fehler auftritt, aber das ist doch irgenwie unelegant.

      Mir ist jetzt noch eine Möglichkeit eingefallen, wie es noch gehen könnte; wenn die Objekte der "Obst"-Klasse alle ein Typenattribut haben kann man ja damit entscheiden in welche Klasse ich den Inhalt aus der XML zurück übersetzten möchte. Wär das eine mögliche Umsetzung oder gibt es da vielleicht schon bessere Wege?

      Comment


      • #4
        Wäre es. Habe in C/C++ noch keine gute Methode gefunden Klassen als XML zu speichern (Analog JAXB in Java). Habe allerdings auch lange nicht mehr geschaut.
        Christian

        Comment

        Working...
        X