mise à jour/ajouter des données au fichier xml à l'aide de php
cela peut sembler assez simple, mais encore je veux poster cette question dans le forum. J'ai un fichier xml, qui doit être ajoutée avec des données après l'élément principal et enregistrer le fichier xml sans écraser le fichier xml existant, mais pour ajouter les données pour les données déjà existant et de mettre à jour le fichier xml.
Par exemple mes données xml ressemble à quelque chose de similaire à ceci:
<maincontent>
<headercontent>
<product num="2102">
<name>MSG</name>
<category>Wellness</category>
<available content="YES"></available>
</product>
<product num="2101">
<name>YSD</name>
<category>Music</category>
<available content="NO"></available>
</product>
<product num="2100">
<name>RCS</name>
<category>Media</category>
<available content="YES"></available>
</product>
</headercontent>
</maincontent>
Je veux ajouter un autre produit avec toutes les infos et ajouter les nouvelles données dans le haut de sorte que les nouvelles données doivent venir après le headercontent.
D'ajouter des données:
<product num="2103">
<name>AGB</name>
<category>Movies</category>
<available content="YES"></available>
</product>
Le fichier xml mis à jour devrait être comme ceci, comme indiqué ci-dessous:
<maincontent>
<headercontent>
<product num="2103">
<name>AGB</name>
<category>Movies</category>
<available content="YES"></available>
</product>
<product num="2102">
<name>MSG</name>
<category>Wellness</category>
<available content="YES"></available>
</product>
<product num="2101">
<name>YSD</name>
<category>Music</category>
<available content="NO"></available>
</product>
<product num="2100">
<name>RCS</name>
<category>Media</category>
<available content="YES"></available>
</product>
</headercontent>
</maincontent>
Quelque conseil utile ou un morceau de code en exemple serait vraiment utile.
Edit:
désolé les gars, je n'ai pas posté tout code php de ma faute. Voici le code que j'ai travaillé sur:
Grâce
<?php
$xmldoc = new DomDocument();
$xmldoc->formatOutput = true;
$productNum = "2103";
$name = "AGB";
$category = "Movies";
$content = "YES";
if($xml = file_get_contents('main.xml')){
$xmldoc->loadXML($xml);
$root = $xmldoc->firstChild;
$newElement = $xmldoc->createElement('product');
$root->appendChild($newElement);
$numAttribute = $xmldoc->createAttribute("num");
$numAttribute->value = $productNum;
$newElement->appendChild($numAttribute);
$nameElement = $xmldoc->createElement('name');
$root->appendChild($nameElement);
$nameText = $xmldoc->createTextNode($name);
$nameElement->appendChild($nameText);
$categoryElement = $xmldoc->createElement('category');
$root->appendChild($categoryElement);
$categoryText = $xmldoc->createTextNode($category);
$categoryElement->appendChild($categoryText);
$availableElement = $xmldoc->createElement('available');
$root->appendChild($availableElement);
$availableAttribute = $xmldoc->createAttribute("content");
$availableAttribute->value = $content;
$availableElement->appendChild($availableAttribute);
$xmldoc->save('main.xml');
}
?>
Mon fichier xml est mis à jour mais les données sont ajoutées à la firstchild et que trop dans le bas, au lieu de cela, je veux ajouter des données après et au début, comme indiqué ci-dessus.
Voici mon résultat:
<maincontent>
<headercontent>
<product num="2102">
<name>MSG</name>
<category>Wellness</category>
<available content="YES"/>
</product>
<product num="2101">
<name>YSD</name>
<category>Music</category>
<available content="NO"/>
</product>
<product num="2100">
<name>RCS</name>
<category>Media</category>
<available content="YES"/>
</product>
</headercontent>
<product num="2103"/><name>AGB</name><category>Movies</category><available content="YES"/></maincontent>
Des conseils?
double possible
http://stackoverflow.com/questions/194574/inserting-data-in-xml-file-with-php-dom
J'ai mis à jour le post, toutes les réponses!
OriginalL'auteur 125369 | 2012-06-13
Vous devez vous connecter pour publier un commentaire.
Cela fonctionne.
Espère que cette aide.
heureux de vous aider. On vous avait déjà fait le travail dur, tout ce que j'avais à faire était de le modifier en deux endroits 😉
OriginalL'auteur web-nomad