[DOM] Conserver la structure avec formatOutput
Bonjour,
J'ai un fichier XML qui contient déjà des données et lorsque j'en ajoute, je voudrais réutiliser la methode formatOutput de l'object DOMDocument mais rien n'y fait, les noeuds sont ajoutés en vrac à la ligne...
Voici ma classe :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
| <?php
class user
{
private $xml, $root;
private $user_id, $user_pseudo, $user_pwd, $user_name, $user_email, $user_right;
private $new_id, $new_pseudo, $new_pwd, $new_name, $new_email, $new_right;
function __construct()
{
$this->xml = new DOMDocument();
$this->xml->formatOutput = true;
$this->xml->load('users.xml');
$this->root = $this->xml->getElementsByTagName('root_users')->item(0); //element racine
}
private function createNodes()
{
$new_user = $this->root->appendChild($this->xml->createElement('user'));
$this->user_id = $new_user->appendChild($this->xml->createElement('user_id'));
$this->user_pseudo = $new_user->appendChild($this->xml->createElement('user_pseudo'));
$this->user_pwd = $new_user->appendChild($this->xml->createElement('user_pwd'));
$this->user_name = $new_user->appendChild($this->xml->createElement('user_name'));
$this->user_email = $new_user->appendChild($this->xml->createElement('user_email'));
$this->user_right = $new_user->appendChild($this->xml->createElement('right_id'));
}
private function addDatas()
{
$this->new_id = $this->user_id->appendChild($this->xml->createTextNode('2'));
$this->new_pseudo = $this->user_pseudo->appendChild($this->xml->createTextNode('pseudo'));
$this->new_pwd = $this->user_pwd->appendChild($this->xml->createTextNode('ede0f9c154d2093e3f48fcafd3c70915'));
$this->new_name = $this->user_name->appendChild($this->xml->createTextNode('Name'));
$this->new_email = $this->user_email->appendChild($this->xml->createTextNode('email@domain.tld'));
$this->new_right = $this->user_right->appendChild($this->xml->createTextNode('1'));
}
function add_user()
{
$this->createNodes();
$this->addDatas();
echo $this->xml->saveXML();
}
}
$new_user = new user();
$new_user->add_user();
?> |
Et voici ce que j'obtiens quand j'affiche la source :
Code:
1 2 3 4 5 6 7 8 9 10 11
| <?xml version="1.0" encoding="UTF-8"?>
<root_users>
<user>
<user_id>1</user_id>
<user_pseudo>pseudo</user_pseudo>
<user_pwd>ede0f9c3a1d20fcafd3c70915</user_pwd>
<user_name>Name</user_name>
<user_email>email@domain.tld</user_email>
<right_id>1</right_id>
</user>
<user><user_id>2</user_id><user_pseudo>pseudo</user_pseudo><user_pwd>ede0f9c154d2093e3f48fcafd3c70915</user_pwd><user_name>Name</user_name><user_email>email@domain.tld</user_email><right_id>1</right_id></user></root_users> |
Si quelqu'un connait la solution, j'en serais ravis sachant que je n'ai pas encore commencé à apprendre le XSLT.
Merci beaucoup.