simple xml , versuche ein file zu writen

Paspirgilis

Weißer Powerranger
War schwierig hierfür nen title zu finden, sry.

Folgendes:
Ich habe gerade angefange eine Art Datenbank zu bauen mit XML und PHP.

so sieht beispielsweise meine XML datei aus:

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

<user>
	<name>username1</name>
	<pw>pw1</pw>
	<name>username2</name>
	<pw>pw2</pw>
	<name>username3</name>
	<pw>pw3</pw>
</user>

Das auslesen udn so krieg ich auch inzwischen ganz gut hin mit
simplexml_load_file('db/user.xml');

aber es gibt nichts um einen Eintrag "dazwischen" reinzuschreiben.
beispielsweise wenn ich nen neuen User registrieren lassen will, dann muss ich sowas:
Code:
	<name>username3</name>
	<pw>pw3</pw>
zwischen </user> und dem letzten </pw> schreiben.

Hat jemand ideen?

MFG
Mark Paspirgilis
 
SimpleXML ist wirklich sehr mager. DomDocument ist da schon umfangreicher:
PHP:
$dom = new DomDocument();
$dom->load('db/user.xml');
$dom->documentElement->appendChild($dom->createElement('name', 'username3'));
$dom->documentElement->appendChild($dom->createElement('pw', 'pw3'));
 
Entschuldigung dass ich nochmal "nerv" xD

ich habe mich entschieden, nach einem Gespräch mit einem Kumpel der XML mit asp.net benutzt, eine etwas andere logischere strucktur zu wählen, welche allerdings bei mir viele fragen aufwirft.

beispiel des XML-files:
Code:
<?xml version="1.0" encoding="ISO-8859-1" ?>

<userlist>
	<user name="username1" pw="pw1" bgpic="1" startmenupic="1" losses="1" wins="3" email="blabla@blub.de" age="20">
		<game hero="Juggernaut" kills="5" death="3" assists="7" />
		<game hero="Juggernaut" kills="5" death="3" assists="7" />
		<game hero="Juggernaut" kills="5" death="3" assists="7" />
	</user>
	<user name="username2" pw="pw2" bgpic="2" startmenupic="6" losses="1" wins="3" email="blabla@blub.de" age="21">
		<game hero="Juggernaut" kills="5" death="3" assists="7" />
		<game hero="Juggernaut" kills="5" death="3" assists="7" />
	</user>
	<user name="username3" pw="pw3" bgpic="3" startmenupic="5" losses="1" wins="3" email="blabla@blub.de" age="22">
		<game hero="Juggernaut" kills="5" death="3" assists="7" />
		<game hero="Juggernaut" kills="5" death="3" assists="7" />
	</user>
</userlist>

So könnte die XML "Tabelle" dann aussehen.
Hat hier jemand die Güte mir zu sagen/erklären mit welchen Funktionen ich da weiter komme wenn cih auslesen und später hineinschreiben will.
Wäre auch noch einer so nett und erklärt mir folgende beispiele?:
1. Ich will ein Attribute ändern z.B. die email adresse
2. ich will einen User löschen.
3. ich will ein game (,also nen kompletten game-tag) hinzufügen.
4. Ich will einen User hinzufügen (ohne <game> denn die kommen mit der zeit später dazu)

Hoffe meine anfragen/forderungen sind nicht zu frech xD.

MFG
Mark Paspirgilis

PS: Ich habe heute angefangen mit den XML php-funktionen.
 
Moin,

dafür gibt es diverse Methoden, du findest sie alle in der PHP-Doku.
Die meisten werden dir vielleicht schon von Javascript her bekannt vorkommen...auch dort gibt es ja das DOM.

appendChild(): Knoten einfügen
setAttribute():Attribut hinzufügen
removeChild(): Knoten entfernen
insertBefore(): einen Knoten an einer bestimmten Stelle vor einem anderen Knoten einfügen
usw.

dateibasiertes Lesen und Schreiben des Dokumentes :

Einlesen einer Datei in ein DOM-Document: load()
Zurückspeichern des Dokumentes: save()

Das Sinvollste wäre, bevor du richtig loslegst, dir zu verinnerlichen, das so eine XML-Datei keine Zeichenkette ist, sondern ein Objekt, wenn du sie mit DOM-Funktionen verarbeitest.
Streiche am Besten alles über PHP-String-Funktionen aus deinem Hirn, während du daran arbeitest...dann fängt es schnell an Spass zu machen.
Und wenn alles dann mal läuft, hast du ein sauberes Ergebnis, denn im Gegensatz zu PHP duldet das DOM kein Gewurschtel :-)
 
Zuletzt bearbeitet:
danke deinem link bin uich gefolgt und hab mir mal dom bei php reingezogen ganz schön anstrengend.
das register-programm geht jetzt hatte aber 4 std gebraucht :D

MFG
Mark Paspirgilis
 
Zurück