für Profis: XML Dokument erzeugen. aus DB Lesen, dann in Datei schreiben. Danke!

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • für Profis: XML Dokument erzeugen. aus DB Lesen, dann in Datei schreiben. Danke!

    Guten Tag und schonmal Danke das ihr euch die Zeit nehmt meinen Beitrag zu lesen!

    Ich habe folgendes Problem:

    Ich habe Daten in einer Oracle DB. Nun möchte ich zum Datenaustausch ein XML Dokument erzeugen, als Datei auf der Festplatte, der die Daten in einer ganz bestimmten Form enthält. Also nicht in der Form

    <Kunde>
    <Name>bla</Name>
    <Vorname>bla2</Vorname>
    </Kunde>
    <Kunde>
    ...
    </Kunde>

    sondern ich würde die Daten gerne aus der DB ziehen, und dann in einer bestimmten Struktur ablegen (mehrdimensional). was benutzt man da am besten? ein array?

    die struktur sollte so in etwas aussehen

    <Resultate>
    <Typ1>
    <TypName>income</TypName>
    <Resultat>
    <ResultatName>Wasser</ResultatName>
    <GruppenResultat>
    <GruppenName>C2</GruppenName>
    <ResultatWert>
    <Proben>10</Proben>
    <ok>9</ok>
    </ResultatWert>
    <Bemerkunen></Bemerkungen>
    </GruppenResultat>
    +<GruppenResultat>
    +<GruppenResultat>
    .
    .
    .
    </Resultat>
    </Typ1>
    +<Typ2>
    .
    .
    .
    </Resultate>

    Also unter dem Obertag <Resulate> befinden sich mehere Typen <Typ1>... und darunter eben die dargestellte Struktur.
    Wie würdet ihr jetzt an die Sache rangehen? Weiss nicht welcher der optimale Weg wäre!? ob mit DOM oder SimpleXML?
    Zu sagen ist noch, dass die Tagnamen wie sie im xml Dokument heissen sollen anders lauten als die SpaltenNamen der Tabellen.

    Ich könnte mir sowas hier vorstellen, ist darauf nicht anzuwenden in der Form aber sind erste Gedanken dazu:

    $res = sql_query("select bla from bla where ... and ...");

    $xml = "<Resultate>";
    for($i = 0; $record = mysql_fetch_assoc($res); $i++)
    {
    $xml .= "<Typ1=\"$i\">";
    foreach($record as $key=>$value)
    {
    $xml .= "<$key>$value</$key>";
    }
    }
    $xml .= "</Resultate>";

    Also irgentwie die gewünschte XML Struktur (s.o.) mit Schleifen erzeugen und in eine Variable schreiben, jeweils hintenran. So dass man dann einfach mit fopen, fwrite, fclose den Inhalt von $xml in eine Datei schreiben kann. Um diese mehrdimensionale XML Struktur zu erhalten benötigt man sicher mehrere ineinander geschachtelte Schleifen oder? Oder macht man eben eine DB Abfrage, liest die benötigten Daten in ein Array ein und schreibt dann immer hintenran

    $xml.= "<Resultat>";
    $xml.="<Typ1>";
    $xml.="<TypName>$array[0]</TypName>"

    etc.

    und baut somit die gewünschte Struktur auf??? Darum eine Schleife, für alle Zeilen des Arrays???

    Bitte helft mir, ich habe versucht mein Problem möglichst detailliert zu beschreiben. Falls es noch Fragen gibt, gerne! Vielleicht denke ich auch nur zu kompliziert und es gibt eben eine einfache Lösung oder eine meiner angedachten Lösungen bringt einen schon ans Ziel. Vielleicht könnte einer meinen Gedanken weiterspinnen und mir sagen wie ich mein Problem lösen kann. Schon jetzt Danke für Eure Mühe.

    Cleif

  • #2
    ANTWORT

    Kann mir nicht bitte jemand helfen? Ich hab doch versucht das problem relativ einzugrenzen...

    bei anderen thread hilft doch auch jemand weiter...

    ich wollte jetzt mir die xml datei zusammenbasteln, quasi die Daten auslesen und in eine Datei zum Schluss schreiben.

    welches ist die gängige/ methode? ocifetchstatement oder oci_fetch_all oder ...???

    Bitte...

    Cleif

    Kommentar


    • #3
      Entweder oder oder oder ...
      - per pedes wie du es schon angedacht hast
      - oder mit Smarty
      - oder irgendeiner anderen Template Engine die Schleifen kann
      - oder mit einer XML-Klasse, die solches XML eben erzeugen kann
      - oder Oracle beibringen, es direkt wie gewünscht auszugeben
      - oder doch gar kein XML erzeugen

      Mal abgesehen von den beiden letzten hat alles seine Vor- und Nachteile.
      Den letzten Punkt meine ich durchaus ernst. Denn wenn du nur XML erzeugst, um es woanders wieder parsen zu können, klappt das nur wenns auch valide ist. Und valides XML erzeugt man mit XML-Klassen (4. Punkt).
      Falls du es woanders mit PHP parsen möchtest, spar dir die Mühe und serialize() nur.
      Zuletzt geändert von onemorenerd; 29.04.2005, 12:25.

      Kommentar

      Lädt...
      X