XML PHP => text contents muteren
Het XML bestand zie er zo uit.
<config>
<database>
<host>localhost</host>
<user>root</user>
<password>root</password>
</database>
<ftp>
</ftp>
</config>
Hiermee wil ik de tekst content van de noten: host, user en password veranderen. Ik probeer eerst nieuwe noden te maken met een andere tekst content en dan de ouwe noden te vervangen met de functie replaceChild(). Ik gebruik drie maal de functie replaceChild() en het probleem is dat de functie replaceChild alleen één keer kan aangeroepen worden , de keren daarna doet het niet meer… Ik hoop iemand mij kan helpen.. hieronder ziet u mijn code.
// de document wordt opgeladen
$doc = new DomDocument();
$doc->load("config.xml");
// een functie om een oud node te vervangen door een nieuwe
function replaceNode($document, $tagName, $textNode, $oldNode){
$newNode = $document->createElement($tagName);
$titletext = $document->createTextNode($textNode);
$newNode->appendChild($titletext);
$oldNode->parentNode->replaceChild($newNode, $oldNode);
}
// hier wordt drie maal de eigen functie replaceNode() aangeroepen
// waar alleen de eerste keer het doet
if (isset($_POST["host"]) && $_POST["host"] !="" && isset($_POST["user"]) && $_POST["user"] !="" && isset($_POST["pwd"]) && $_POST["pwd"] !=""){
foreach ($doc->documentElement->childNodes as $config) {
// nodeType: 1 voor een XML element en 3 voor een text node
if ($config->nodeType == 1 && $config->nodeName == "database") {
foreach ($config->childNodes as $database) {
if ($database->nodeType == 1 && $database->nodeName == "host") {
//echo $database->textContent;
replaceNode($doc, "host", $_POST["host"], $database);
}
if ($database->nodeType == 1 && $database->nodeName == "user") {
echo "test".$database->textContent;
replaceNode($doc, "user", $_POST["user"], $database);
}
if ($database->nodeType == 1 && $database->nodeName == "password") {
$database->parentNode->replaceChild($new, $database);
}
}
}
if ($config->nodeType == 1 && $config->nodeName == "ftp") {
foreach ($config->childNodes as $ftp) {
}
}
}
print $doc->save("config.xml");
}
Code (php)
1
<?xml neer, want de browser kan dit opvatten als php! Doe daarom <?php echo "<?xml ....":