Zum Inhalt springen

XML mit PHP Prasen - XML Aufbau ?


Empfohlene Beiträge

Ich stehe vor folgendem Problem :

Ich habe eine XML Datei, welche ich mit PHP Prasen möchte und

einzelne Werte in eine Datenbank schreiben möchte.

Soweit so gut, nur es gibt gute Infos zum Prasen via PHP z.B. von Oreilly, PHP.net, Zend usw.

Doch leider verwenden alle Beispiele ein Standart XML Datei nach folgendem

Schema :

 

<library>

  <book>

    <title>Programming PHP</title>

    <authors>

      <author>Rasmus Lerdorf</author>

      <author>Kevin Tatroe</author>

    </authors>

    <isbn>1-56592-610-2</isbn>

    <comment>A great book!</comment>

  </book>

</library>

Doch die XML Datei, welche ich benötige besitzt nicht solch ein Standartgerüst.

Mal gibts neben comment ein Feld z.B. für Bewertung oder ähnliches.

Doch auch nicht bei allen.

Nun frage ich mich in wie weit lässt sich solch eine XML Datei Prasen ?

Schon einmal Danke für eure Hilfe

Tool-Time :)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Was willst du genau machen? Willst du die Daten aus der XML-Datei nur lesen und in eine DB schreiben? Dann nutze die Funktion xml_set_element_handler().

Wenn du allerdings dein XML prüfen möchtest, kannst du xml_parse() benutzen.

Ich weiss allerdings nicht, ob er nur auf Wohlgeformheit oder auch auf Gültigkeit hin prüft.

Genaueres gibts hier

Was meinst du eigentlich mit "Standartformate"?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hier mal ein Beispiel für ein ungeordnetes XML von XML-Line :

Quelle : http://www.media-palette.de/tools/xml-line/


<?xml version="1.0" encoding="ISO-8859-1"?>
<nahrungsmittel>
- <vegetarisch>
- - <obst>Apfel</obst>
- - <obst>Birne</obst>
- - <obst>Himbeere</obst>
- - <gemuese preis="gut">Möhre</gemuese>
- - <gemuese>Kopfsalat</gemuese>
- - <gemuese>Tomate</gemuese>
- </vegetarisch>
- <fleisch>
- - <schwein>Schnitzel</schwein>
- - <rind>Gulasch</rind>
- </fleisch>
</nahrungsmittel>
[/php]

Alle Beispiel XML Dateien, welche ich bisher gefunden haben sind wie im

ersten Posting sauber geordnet.

Doch meine XML Datei ist dem Beispiel in diesem Posting sehr ähnlich,

mit der Ausnahme das sich die Anzahl der Tags stark erhöht

Wenn ich das XML von oben ( aus diesem Posting) in geordnetes XML umschreibe würde es so aussehen:

[php]
<?xml version="1.0" encoding="ISO-8859-1"?>
<nahrungsmittel>
- <vegetarisch>
- - <obst>Apfel</obst>
- - <obst>Birne</obst>
- - <obst>Himbeere</obst>
- </vegetarisch>
</nahrungsmittel>

Oder habe ich gerade ein Brett vorm Kopf ? :rolleyes:

Also noch mal kurz der Grundgedanke was mit der XML Datei passieren soll.

1) Datei einlesen (parsen) ,

2) Werte entnehmen

3) Werte in HTML / (eventuell Flash ) anzeigen lassen

4) Werte für weitere Verarbeitung bzw. Nutzung in eine Mysql DB schreiben

Danke für eure Hilfe :)

Gruß Tool-Time :StefanE

der mit dem Brett vorm Kopf

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hier mal ein Beispiel für ein ungeordnetes XML von XML-Line :

Quelle : http://www.media-palette.de/tools/xml-line/


<?xml version="1.0" encoding="ISO-8859-1"?>
<nahrungsmittel>
- <vegetarisch>
- - <obst>Apfel</obst>
- - <obst>Birne</obst>
- - <obst>Himbeere</obst>
- - <gemuese preis="gut">Möhre</gemuese>
- - <gemuese>Kopfsalat</gemuese>
- - <gemuese>Tomate</gemuese>
- </vegetarisch>
- <fleisch>
- - <schwein>Schnitzel</schwein>
- - <rind>Gulasch</rind>
- </fleisch>
</nahrungsmittel>
[/php]

Alle Beispiel XML Dateien, welche ich bisher gefunden haben sind wie im

ersten Posting sauber geordnet.

Doch meine XML Datei ist dem Beispiel in diesem Posting sehr ähnlich,

mit der Ausnahme das sich die Anzahl der Tags stark erhöht

Wenn ich das XML von oben ( aus diesem Posting) in geordnetes XML umschreibe würde es so aussehen:

[php]
<?xml version="1.0" encoding="ISO-8859-1"?>
<nahrungsmittel>
- <vegetarisch>
- - <obst>Apfel</obst>
- - <obst>Birne</obst>
- - <obst>Himbeere</obst>
- </vegetarisch>
</nahrungsmittel>

Oder habe ich gerade ein Brett vorm Kopf ? :rolleyes:

Also noch mal kurz der Grundgedanke was mit der XML Datei passieren soll.

1) Datei einlesen (parsen) ,

2) Werte entnehmen

3) Werte in HTML / (eventuell Flash ) anzeigen lassen

4) Werte für weitere Verarbeitung bzw. Nutzung in eine Mysql DB schreiben

Danke für eure Hilfe :)

Gruß Tool-Time :StefanE

der mit dem Brett vorm Kopf

also wenn du die Struktur einhäls ist die Anzahl der Tags doch egal.

ich würde wenns nichts direkt bei www.php.net zu xml dateien parsen und werte entnehmen gibt, mal bei http://pear.php.net vorbeischauen.

warum willst du nicht aus deiner XML Datei direkt per XSL Datei und Browser eine HTML Datei erzeugen?

Link zu diesem Kommentar
Auf anderen Seiten teilen

warum willst du nicht aus deiner XML Datei direkt per XSL Datei und Browser eine HTML Datei erzeugen?

Die Werte aus der XML Datei sollen jeweils in ein Input Feld geladen werden,

damit man diese noch ändern kann. :)

also wenn du die Struktur einhäls ist die Anzahl der Tags doch egal.

Da heute ja PHP 5 released wurde versuche ich es mal mit der neuen XML Schnittstelle.

Aber du meinst, es sollte auch bei einem XML Aufbau wie im letzten Posting Beispiel 1 ohne Probleme funktionieren ?

Gruß Tool-Time :StefanE

Link zu diesem Kommentar
Auf anderen Seiten teilen

Nach dem ich nun gut 2 Stunden mir PHP5 und SimpleXML herumgespielt habe :OD

Scheint es zu gehen und zwar so wie ich es benötige.

Ich werde es in den nächsten Tagen noch weiter ausprobieren .

Danke für deine Hilfe

Gruß Tool-Time :StefanE

dazu sind wir ja da... :)

bitte poste deine Lösung für Leute mit gleichem/ähnlichen Problem(en)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hier einmal kurz eine Beschreibung wie man mit PHP 5 über SimpleXML eine XML Datei verarbeiten kann .

Die XML Datei nahrungsmittel.xml


<?xml version="1.0" encoding="ISO-8859-1"?>

<nahrungsmittel>

  -  <vegetarisch>

  -     -  <obst>Apfel</obst>

  -     -  <obst>Birne</obst>

  -     -  <obst>Himbeere</obst>

  -     -  <gemuese preis="gut">Möhre</gemuese>

  -     -  <gemuese>Kopfsalat</gemuese>

  -     -  <gemuese>Tomate</gemuese>

  -  </vegetarisch>

  -  <fleisch>

  -     -  <schwein>Schnitzel</schwein>

  -     -  <rind>Gulasch</rind>

  -  </fleisch>

</nahrungsmittel>

Die PHP Datei zum Abfragen eat_food.php ;)

 
<?php
$xmldata = "nahrungsmittel.xml";
if(file_exists($xmldata))
{
$xmlreport = @simplexml_load_file($xmldata)
or die ("Datei $xmldata konnte nicht geladen werden");
echo " XML datei geladen ";

##
# Auslesen der Gruppe Obst
##
$apfel = $xmlreport->vegetarisch[0]->obst[0]->Value;
$Birne = $xmlreport->vegetarisch[0]->obst[1]->Value;
$Himbeere = $xmlreport->vegetarisch[0]->obst[2]->Value;

##
# Auslesen der Gruppe Fleisch
##
$schnitzel = $xmlreport->fleisch[0]->schwein[0]->Value;
}
else
{
echo" Die XML Datei $xmldata ist nicht vorhanden";
}
?>
[/php]

Mit simplexml_load_file($xmldata) wird die XML Datei nahrungsmittel.xml eingelesen und $xmlreport als Object übergeben.

Da $xmlreport nun ein Object ist kann man ganz einfach auf jeden Wert innerhalb der XML Datei zugreifen.

[php]
$apfel = $xmlreport->vegetarisch[0]->obst[0]->Value;

Hier sieht man in wie weit man auf den Wert (Value) des ersten Eintrags in der Gruppe Obst zugreift.

Für den Fall das jemand die XML Datei in die PHP Datei schreibt, gibt es die

SimpleXML Funktion simplexml_load_string.

Sie ist mit der load_file identisch, mit der Ausnahme das sie keine externen XML Datein einläd.

Weitere Infos zu SimpleXML unter PHP.net

Gruß Tool-Time :StefanE

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...