Bonjour à tous,
Je suis actuellement confronté à une difficulté que je n'arrive pas à résoudre
-> Merci par avance si vous avez quelque suggestion à me proposer !
Voilà l'affaire :
J'ai un code XML qui se présente selon l'exemple que j'ai mis ci-dessous (XML.xml); code que je modifie à l'aide du code PHP exposé ci-dessous
-> Seulement, les balises enfant ne sont pas recopiées et donc, n'apparaissent pas dans le fichier XML, après modification !
-> Sauriez-vous me dire comment arranger cela, SVP ?
Sinon, comme l'indique le titre de ce topic, ma perspective est, en fait, de changer le nom du titre ("Titre recherché", ici, en l'occurrence) en un autre titre ($Nouveau_titre), mais peut-être cette étape sera à voir dans un 2ème temps, une fois que j'aurai su comment "récupérer" les enfants ?
Code PHP :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 <?php $Nouveau_titre = "Nouveau titre"; // On réceptionne l'enregistrement existant (méthode DOM !) $dom=new DomDocument(); // on respecte la mise en forme initiale $dom->preserveWhitespace = false; $dom->load('XML.xml'); // Nom du fichier XML utilisé pour enregistrer les données $xpath = new DOMXPath($dom); /* Variable -> accès à l'arbre DOM via le xpath */ // Recherche du lieu d'insertion $requete = '//r[@code="726"]'; $insertion = $xpath->query($requete)->item(0); // On sauvegarde les enfants $enfants = $xpath->query($requete)->childNodes; // On crée une balise <r> ayant le nouveau titre (et le même "code" et le même contenu que l'ancien titre) $balise_changee = $dom->createElement("r"); $balise_changeeT = $dom->createTextNode($enfants); $balise_changee->appendChild($balise_changeeT); $balise_changee->setAttribute("code", "726"); // On insère la nouvelle balise <r> à la place de l'ancienne $insertion->parentNode->replaceChild($balise_changee, $insertion); //On sauvegarde le fichier xml dans l'enregistrement existant $dom->save('XML.xml'); ?>
Code XML :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16<?xml version="1.0" encoding="UTF-8"?> <enregistrements> <r code="123">Titre </r> <r code="726">Titre recherché <regroupement>Titre du regroupement 1 <t titre="Bonjour">Texte 1 </t> </regroupement> <regroupement>Titre du regroupement 2 <t titre="Salut">Texte 2 </t> </regroupement> </r> </enregistrements> ?>
Partager