Hallo zusammen,
nach langer Abstinenz mal wieder eine Frage.
Also, ich habe eine xml-Datei mit folgendem Aufbau:
Nun hab ich ein Formular geschrieben, in dem ich die vorhandenen Einträge ändern und löschen kann und neue Einträge hinzufügen kann. Das klappt soweit.
Nun meine Frage: Füge ich jetzt z.B. einen Eintrag mit dem Namen "Test2" ein, wird dieser am Ende unter "Test3" eingefügt. Wie kann ich den xml-Output nun nach dem Attribut 'name' sortieren lassen bevor ich ihn in die Datei zurück schreibe?
So sieht etwa mein Code aus:
Hat jemand evtl eine Ahnung, wie ich das realisieren kann?
nach langer Abstinenz mal wieder eine Frage.
Also, ich habe eine xml-Datei mit folgendem Aufbau:
Code:
<?xml version="1.0" encoding="ISO-8859-1"?>
<eintr>
<eintrag name="Test1" str="Teststr. 1" plz="12345 Testort" nr="467"/>
<eintrag name="Test3" str="Teststr. 3" plz="12345 Testort" nr="405"/>
</eintr>
Nun meine Frage: Füge ich jetzt z.B. einen Eintrag mit dem Namen "Test2" ein, wird dieser am Ende unter "Test3" eingefügt. Wie kann ich den xml-Output nun nach dem Attribut 'name' sortieren lassen bevor ich ihn in die Datei zurück schreibe?
So sieht etwa mein Code aus:
PHP:
$dat = "test.xml";
$xml = simplexml_load_file($dat);
if(@$_POST["typ"] == "neu" && strlen(@$_POST["n_nr"]) > 0) {
// section erstellen und wert zuweisen
$section = $xml->addChild("eintrag");
$section->addAttribute("name", utf8_encode(@$_POST["n_name"]));
$section->addAttribute("str", utf8_encode(@$_POST["n_str"]));
$section->addAttribute("plz", utf8_encode(@$_POST["n_plz"]));
$section->addAttribute("nr", utf8_encode(@$_POST["n_nr"]));
speichern($xml,$dat);
$xml = simplexml_load_file($dat);
}
function speichern($inhalt,$datei) {
$doc = new DOMDocument('1.0', 'UTF-8');
$doc->preserveWhiteSpace = false;
$doc->loadXML($inhalt->asXML());
$doc->formatOutput = true;
file_put_contents($datei,$doc->saveXML());
}