marfirk
Gesperrt
Hi,
Ich möchte in eine bestehende .xml-Datei einige Daten einfügen. Dabei will ich zuerst abfragen, ob gewisse Daten schon existieren und gegebenenfalls hinzufügen.
Genauer habe ich folgende Informationen:
Ich möchte jetzt in folgendem Stil die Informationen speichern:
Dabei soll geprüft werden, inwiefern der Trakt, oder das Stockwer, etc schon vorhanden sind und gegebenenfalls ergänzt werden, bis die oben aufgeführte Struktur vorhanden ist.
Das ist mein PHP-Code:
Der erste Eintrag wird auch ganz brav geschrieben, nur bei weiteren Einträgen gibt es eine ellenlange Fehlerliste.
Ich habe hier mal die IMO interessantesten Fehler:
Ich hoffe, jemand kann sich da einen Reim drauf machen?! Ich bin leider noch recht neu in PHP und XML....
Ich wünsche allen einen guten Rutsch ins neue Jahr!
marfirk
Ich möchte in eine bestehende .xml-Datei einige Daten einfügen. Dabei will ich zuerst abfragen, ob gewisse Daten schon existieren und gegebenenfalls hinzufügen.
Genauer habe ich folgende Informationen:
- Klasse
- Trakt
- Stockwerk
- Raum
Ich möchte jetzt in folgendem Stil die Informationen speichern:
PHP:
<main>
<trakt>
<stockwerk>
<raum>Klasse</raum>
</stockwerk>
<trakt>
</main>
Dabei soll geprüft werden, inwiefern der Trakt, oder das Stockwer, etc schon vorhanden sind und gegebenenfalls ergänzt werden, bis die oben aufgeführte Struktur vorhanden ist.
Das ist mein PHP-Code:
PHP:
$xmlraum=simpleXML_load_file("data/map_raum.xml");
//Gibt es $trakt schon?
if($xmlraum->$trakt){
//Gibt es $trakt->$stockwerk schon?
if($xmlraum->$trakt->$stockwerk){
//Gibt es da den $raum schon?
if($xmlraum->$trakt->$stockwerk->$raum){
//Wenn $raum steht was
if($xmlraum->$trakt->$stockwerk->$raum != ""){
//dann: Ausgabe der schnelleren Klasse
$schnellereKlasse=$xmlraum->$trakt->$stockwerk->$raum;
echo "Besetzt von der Klasse: $schnellereKlasse";
}
//Wenn $raum nix steht:
else{
//Gebe $klasse ein
$xmlraum->$trakt->$stockwerk->$raum="$klassenstufe$buchstabe";
$xmlraum->asXML("data/map_raum.xml");
}
}else{
//Add neuen Raum
$xmlraum->$trakt->$stockwerk->addChild("$raum","$klassenstufe$buchstabe");
echo $xmlraum->asXML("data/map_raum.xml");
}
}else{
//Add neuen Stock
$xmlraum->$trakt->addChild("$stockwerk");
$xmlraum->$trakt->$stockwerk->addChild("$raum","$klassenstufe$buchstabe");
echo $xmlraum->asXML("data/map_raum.xml");
}
}else{
//Add neuen Trakt
$xmlraum->addChild("$trakt");
$xmlraum->$trakt->addChild("$stockwerk");
$xmlraum->$trakt->$stockwerk->addChild("$raum","$klassenstufe$buchstabe");
echo $xmlraum->asXML("data/map_raum.xml");
}
Der erste Eintrag wird auch ganz brav geschrieben, nur bei weiteren Einträgen gibt es eine ellenlange Fehlerliste.
Ich habe hier mal die IMO interessantesten Fehler:
Warning: simplexml_load_file() [function.simplexml-load-file]: data/map_raum.xml:2: parser error : StartTag: invalid element name in C:\xampp\htdocs\f\write_neue_klasse.php on line 15
Warning: simplexml_load_file() [function.simplexml-load-file]: <raum><item2>hihi<blubb>asdf</blubb></item2><n><stock1><2>4d</2></stock1></n></r in C:\xampp\htdocs\f\write_neue_klasse.php on line 15
Fatal error: Call to a member function addChild() on a non-object in C:\xampp\htdocs\f\write_neue_klasse.php on line 50
Ich hoffe, jemand kann sich da einen Reim drauf machen?! Ich bin leider noch recht neu in PHP und XML....
Ich wünsche allen einen guten Rutsch ins neue Jahr!
marfirk