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
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
Kommentar