Bonjour à tous,
Je travaille sur de la manipulation de fichier XML et je cherche à dupliquer une balise XML en la copiant juste en dessous et en modifiant uniquement 2 attributs dans cette balise.
Pour illustrer cela, voici le xml:
Code XML : 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 <w:sdt> <w:sdtPr> <w:alias w:val="NOM"/> <w:tag w:val="VAR"/> <w:id w:val="-205336718"/> <w:placeholder> <w:docPart w:val="DefaultPlaceholder_-1854013440"/> </w:placeholder> </w:sdtPr> <w:sdtEndPr/> <w:sdtContent> <w:p w14:paraId="0D28C79D" w14:textId="3EF1D9FD" w:rsidR="003F1BE5" w:rsidRDefault="00FB0DCB"> <w:r> <w:t>NOM</w:t> </w:r> </w:p> </w:sdtContent> </w:sdt>
Je cherche à dupliquer la balise sdt et tout ce qu'elle contient.
Pour cela j'arrive bien à venir sélectionner la balise sdt qui m'intéresse en la repérant grace à son attribut ID via le code suivant:
En revanche je ne vois pas du tout comment venir la dupliquer juste en dessous et en remplaçant la balise ID par la valeur -205336718_1
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 $dom = new DOMDocument(); $dom->loadXML($content); $xp = new DOMXPath($dom); $xp->registerNameSpace('w', 'http://schemas.openxmlformats.org/wordprocessingml/2006/main'); $q_sdt ='//w:sdt[./w:sdtPr/w:id/@w:val="-205336718"]'; $sdt = $xp->query($q_sdt)->item(0);
J'ai besoin d'être mis sur une piste, merci de votre aide.
AL
Partager