Bonsoir tout le monde,
Je vous expose mon problème. Je cherche à remplacer tous les 60 ans qui se trouvent dans les balises <p> de mon fichier XML en 150 ans. J'arrive à trouver les valeurs qui se trouvent dans la balise <p> et maintenant je voudrais les remplacer. Pour ce faire, il faut que je trouve l'arborescence de ces balises. Est-ce que quelqu'un connaître une façon de le faire svp ?
Voici mon fichier xml simplifié :
Et voici mon code (ce qu'il me manque est symbolisé par ça ????? )
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105 <c id="tt1-7" level="series"> <did> <unittitle type="titre">niveau de titre 1</unittitle> </did> <c id="tt2-5" level="subseries"> <did> <unittitle type="titre">Niveau de titre 2</unittitle> </did> <c id="de-40" level="file"> <did> <unitid>40</unitid> <unittitle>Intitulé</unittitle> <unitdate normal="1940/1946">1940-1946</unitdate> </did> </c> <c id="de-13" level="file"> <did> <unitid>13</unitid> <unittitle>Intitulé</unittitle> <unitdate normal="1955/1956">1955-1956</unitdate> </did> <accessrestrict> <accessrestrict type="delai"> <head>Délai</head> <p>150 ans</p> </accessrestrict> <accessrestrict type="com"> <head>communication</head> <p>2107</p> </accessrestrict> </accessrestrict> </c> </c> </c> <c id="tt1-7" level="series"> <did> <unittitle type="titre">niveau de titre 1</unittitle> </did> <c id="tt2-5" level="subseries"> <did> <unittitle type="titre">Niveau de titre 2</unittitle> </did> <c id="tt2-5" level="subseries"> <did> <unittitle type="titre">Niveau de titre 3</unittitle> </did> <c id="de-14" level="file"> <did> <unitid>14</unitid> <unittitle>Intitulé</unittitle> <unitdate normal="1955/1956">1955-1956</unitdate> </did> <accessrestrict> <accessrestrict type="delai"> <head>Délai</head> <p>150 ans</p> </accessrestrict> <accessrestrict type="com"> <head>communication</head> <p>2107</p> </accessrestrict> </accessrestrict> </c> </c> </c> </c>
Merci beaucoup pour votre aide.
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 <?php $xml = simplexml_load_file('fichiersxml/test.xml'); $xpathXml = $xml->xpath('//p'); foreach($xpathXml as $balisesP[$i]) //On cherche les balises P et on boucle dessus { $baliseEnCours = $balisesP[$i]; if(preg_match("#^[0-9]+\s+ans#", $baliseEnCours)) //Si ça répond à la forme 0123456789 ans (exemple : 120 ans ou 2 ans ....) { if($baliseEnCours == "60 ans") { //Ici on veut pouvoir modifier le bon <p> avec la nouvelle valeur $baliseRetournee = "90 ans<br>"; $smpXML->???????? = $baliseRetournee; } } } //On réécrit le fichier xml avec les nouvelles valeurs modifiées $return = $smpXML->asXML(); $fp = fopen('fichiersxml/test.xml', 'w+'); fwrite($fp, $return); fclose($fp); ?>
Partager