[php/xml]Grundidee für XML und XML-Einlesen gesucht

BartTheDevil89

Devilution Media
ID: 87739
L
2 Mai 2006
3.960
103
Hallo,

ich bin mal wieder auf der Suche nach einer Lösung für ein Problem.

Denn ich habe folgende Datentypen:

Art - diese entscheidet über die Art des Eintrages

- bei Art = test
-- Feld auto
-- Feld jahr
-- Feld tag

- bei Art = test2
-- Feld text

- bei Art = test3
-- Feld opa
-- Feld oma
-- Feld kind
-- Feld hier

Also ich habe erst eine Art, die eben bestimmt wie der Eintrag ausschaut und dann je nach Art eine verschiedene Art und Anzahl von Datenfeldern.

Diese Struktur möchte ich jetzt in ner XML-Datei speichern und nachher wieder auslesen.

Also beim auslesen dann je nach Art des Eintrages eben die verschiedenen Felder dann.

Aber wie löse ich sowas am besten? Also wie speichere ich das in ner XML, bzw. welche Form sollte die haben und vor allem:

We lese ich das am besten dann wieder aus? Bei php5 gibts ja simplexml...aber würde es gern so lösen, dass es auch unter php4 läuft.

Vielen Dank für eure Hilfe:roll:
 
We lese ich das am besten dann wieder aus? Bei php5 gibts ja simplexml...aber würde es gern so lösen, dass es auch unter php4 läuft.
https://de2.php.net/manual/en/book.xml.php
- wobei ich anmerken möchte, dass es sich nicht mehr lohnt, für PHP4 zu schreiben, da der Support dort bald eingestellt wird/oder sogar schon is(?) -

Bezüglich dem "wie":
Einfach eben mit Fallunterscheidungen, wie du uns es schon beschrieben hast.

Unter den Dingern "test", "test2" und "test3" kann sich wohl keiner was vorstellen, aber ich tippe drauf, dass dem irgendwelche Objekte etc. entsprechen, also mit Tags modelliert werden müssen:
HTML:
<!-- ... -->
<test>
  <auto>foo</auto>
  <jahr>4711</jahr>
  <tag>42</tag>
</test>
<test2>
  <text>bar</text>
</test2>
<!-- ... -->
 
- wobei ich anmerken möchte, dass es sich nicht mehr lohnt, für PHP4 zu schreiben, da der Support dort bald eingestellt wird/oder sogar schon is(?)
Steht auf php.net ganz oben:
php.net schrieb:
[07-Aug-2008]

The PHP development team would like to announce the immediate availability of PHP 4.4.9. It continues to improve the security and the stability of the 4.4 branch and all users are strongly encouraged to upgrade to it as soon as possible. This release wraps up all the outstanding patches for the PHP 4.4 series, and is therefore the last PHP 4.4 release.
Und das Release wurde noch einen Tag vor der festgelegten Deadline veröffentlicht.

:arrow: Support für PHP 4 eingestellt
 
Hallo,

also schonmal danke an euch beide.
Mir gings halt vor allem drum, dass ich es auch mit php4 mal laufen lassen kann. Aber wenn da der Support mittlerweile eingestellt ist, wirds da ja auch nimmer viele Server in Kürze geben.
 
Ich bräuchte allerdings nochmal bitte Hilfe beim richtigen Auslesen...und zwar habe ich jetzt diese Textxml-Datei als Beispiel:

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

<ROOT>
<film2>
  <titel>James Bond - Die Welt ist nicht genug</titel>
  <medium>DVD</medium>
  <darsteller>
   <hauptdarsteller>Pierce Brosnan</hauptdarsteller>
   <boesewicht>Sophie Marceau</boesewicht>
  </darsteller>
  <bewertung type="points">9</bewertung>
  <bewertung type="stars">4</bewertung>
 </film2>
 <film>
  <titel>Stirb Langsam</titel>
  <medium>VHS</medium>
  <darsteller>
   <hauptdarsteller>Bruce Willis</hauptdarsteller>
   <boesewicht>Alan Rickman</boesewicht>
  </darsteller>
  <bewertung type="points">10</bewertung>
  <bewertung type="stars">5</bewertung>
 </film>
 <film2>
  <titel>Oceans Eleven</titel>
  <medium>DVD</medium>
  <darsteller>
   <hauptdarsteller>George Clooney</hauptdarsteller>
   <boesewicht>Andy Garcia</boesewicht>
  </darsteller>
  <bewertung type="points">8</bewertung>
  <bewertung type="stars">3</bewertung>
 </film2>
</ROOT>

Jetzt möche ich beispielsweise die Titel jedes <film>-Eintrages auslesen und ausgaben. Mein Versuch ist der hier:

PHP:
		$xml_file = new XMLReader();
		$xml_file->open("testxml.xml");
		foreach($xml_file->film as $film) {
			echo "$film->titel<br>";
		}

Allerdings scheint er das nicht hinzubekommen, da ich das herausbekomme als Fehlermeldung:

Warning: Invalid argument supplied for foreach() in....


Wie sollte es denn besser gemacht werden?

Dankeschön
 
1) dein XML ist nicht wohlgeformt: Tags kleinschreiben und die Leerzeile bin ich mir auch nicht sicher, ob die ok is.
2) :rtfm: - ich hab XMLReader auch noch nie benutzt, aber das Manual sagt eindeutig, dass du mit ::read() ran musst.
Das was du grade versuchst, ist SimpleXML, aber das willst du ja nicht, wegen PHP4-Support.
 
Zuletzt bearbeitet:
1) dein XML ist nicht wohlgeformt: Tags kleinschreiben und die Leerzeile bin ich mir auch nicht sicher, ob die ok is.
2) :rtfm: - ich hab XMLReader auch noch nie benutzt, aber das Manual sagt eindeutig, dass du mit ::read() ran musst.
Das was du grade versuchst, ist SimpleXML, aber das willst du ja nicht, wegen PHP4-Support.

Hi,

nein also SimpleXML ist es nicht, das wäre ja zum Beispiel

$xml = new SimpleXMLElement($xmlstr);

Aber wie würdest du es denn hiermit zum Beispiel machen?

Also die XML von dir, hier genannt:

PHP:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<root>
<test>
  <auto>foo</auto>
  <jahr>4711</jahr>
  <tag>42</tag>
</test>
<test2>
  <text>bar</text>
</test2>
</root>

Also die sollte doch vom Aufbau jetzt so passen, richtig?

Aber wie würdest du das jetzt am besten (am liebsten auch in php4 lauffähig, aber wenn nicht, dann wäre auch nur php5 ok) auslesen?

Dankeschön
 
Aber wie würdest du das jetzt am besten (am liebsten auch in php4 lauffähig, aber wenn nicht, dann wäre auch nur php5 ok) auslesen?
Wie gesagt, ich würde PHP4 liegen lassen - wer das jetzt zu Zeiten, wo PHP6 schon in Entwicklung is und hoffentlich bald fertig wird, noch nutzt, is selber schuld - und nur für PHP5 schreiben. Mit dieser Überlegung kann ich SimpleXML benutzen.
Was ich auf alle Fälle vor der Programmierung noch machen würde, mir zu überlegen, wie das XML-Dokument allgemein aussieht und mir deshalb vorher eine DTD anlegen.
 
PHP4 is raus! Ich verstehe auch nicht, wie es Hoster geben kann
die das noch installiert haben? Einer unserer Kunden hast deswegen
derzeit das Problem, dass sich ein aktuelles Typo3 nicht installieren
lässt. Das Backend der alten Version wiederum funktioniert im FF3
wiederum nicht richtig. Wie man sieht, solche Hoster können eine
ganze Reihe an Aktualisierungen ausbremsen. :evil:

Und um die deutlichste Meldung von PHP.net noch zu wiederholen:
php.net schrieb:
PHP 4.4.9

Support for PHP 4 has been discontinued since 2007-12-31. Please consider upgrading to PHP 5.2. The release below is the last PHP 4 release.