tilføj data til xml dokument.
Hej Eksperter.Jeg har et problem som jeg har bøvlet med gennem længere tid.
Jeg har prøvet på at lave et phpscript der modtager 3 $_POSTvariabler og tilføjer dem til en allerede eksisterende xml fil. Men xml filen fucker op når jeg har tilføjet data til den.(The element type "user" must be terminated by the matching end-tag "</user>".)
Men det er sikkert også fuldstændig tåbeligt som jeg har lavet php’ en. Håber der er en der kan hjælpe mig på ret kurs.
Der må være en smartere måde at tilføje data til en xml fil på en min.(der så heller ikke virker :))
Resultatet skulle gerne se sådan her ud:
*********************
<?xml version="1.0" encoding="utf-8"?>
<users>
<user>
<uname>
Navn
</uname>
<pname>
Efternavn
</pname>
<email>
</email>
</user>
</users>
**********************
Mit script fungere således først henter den indholdet fra xml filen og sletter den sidste note "</users>" og tilføjer de nye variabler og overskiver xml filen igen.
if(isset($_POST['UserName'])){
$xmlfileName = $_POST['UserName'];
$xmlfilePass = $_POST['UserPass'];
$xmlfileEmail = $_POST['UserEmail'];
}
$myFile = "userdatadata.xml";
$fh = fopen($myFile, 'r');
$theData = fread($fh, filesize($myFile));
fclose($fh);
$varCount=strlen($theData);
$varCount =$varCount-9;
$xml_doc = substr($theData, 0, $varCount);
$xml_doc .= "<user>";
$xml_doc .= "<uname>";
$xml_doc .= $xmlfileName;
$xml_doc .= "</uname>";
$xml_doc .= "<pname>";
$xml_doc .= $xmlfilePass;
$xml_doc .= "</pname>";
$xml_doc .= "<email>";
$xml_doc .= $xmlfileEmail;
$xml_doc .= "</email>";
$xml_doc .= "</user>";
$xml_doc .= "</users>";
$filen = "userdatadata.xml";
$someconten = $xml_doc;
// Let's make sure the file exists and is writable first.
if (is_writable($filen)) {
if (!$handl = fopen($filen, 'w')) {
// $msg ="Cannot open file ($filename)";
//print "par=test&msg=$msg";
exit;
}
// Write $somecontent to our opened file.
if (fwrite($handl, $someconten) === FALSE) {
// $msg ="Cannot write to file ($filename)";
//print "par=test&msg=$msg";
exit;
}
//$msg ="Success";
//print "par=test&msg=$msg";
fclose($handl);
} else {
//msg ="The file $filename is not writable";
// print "par=test&msg=$msg";
}
/**/
}
?>