Bonjour à tous !
Voila mon problème : je souhaite ajouter un noeud XML à un fichier déjà existant, pour cela j utilise donc le dom cependant j ai un problème de ciblage sur un attribut que je ne comprends pas.
le fichier XML est du type :
Voilà si je cherche à ajouter une offre sur type genre 2 par exemple, je fais comme ceci :
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 <career> <type genre="1"> <offre> <libelle>Branch Manager IMR (M/F)</libelle> <location>Stavanger (Norway) </location> <reference>NR006357-1-12-05</reference> </offre> <offre> <libelle>QHSES Manager (M/F)</libelle> <location>Stavanger (Norway) </location> <reference>NR006357-2-12-05</reference> </offre> <offre> <libelle>Senior Secretary (M/F)</libelle> <location>Stavanger (Norway) </location> <reference>NR006357-3-12-05</reference> </offre> </type> <type genre="2"> <offre> <libelle>Branch Manager IMR (M/F)</libelle> <location>Stavanger (Norway) </location> <reference>NR006357-1-12-05</reference> </offre> <offre> <libelle>QHSES Manager (M/F)</libelle> <location>Stavanger (Norway) </location> <reference>NR006357-2-12-05</reference> </offre> <offre> <libelle>Senior Secretary (M/F)</libelle> <location>Stavanger (Norway) </location> <reference>NR006357-3-12-05</reference> </offre> </type> </career>
et j'ai comme erreur :
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 $parent_path = "/career/type"; $nexti = "//offre"; $XML_Av = new DOMDocument(); $XML_Av->load("../available.xml"); $Xpath = new DomXpath($XML_Av); $query = $Xpath->query("//type[@genre='2']"); //$query = $Xpath->query($parent_path); $above = $Xpath->query($nexti); $elementa = $XML_Av->createElement('libelle', $lib); $elementb = $XML_Av->createElement('location', $loca); $elementc = $XML_Av->createElement('reference', $ref); $elementd = $XML_Av->createElement('offre',''); $query->item(0)->insertBefore($elementd, $above->item(0)); $elementd->appendChild($elementa); $elementd->appendChild($elementb); $elementd->appendChild($elementc); $XML_Av->save("../available.xml");
et si je remplace mon query pour reprendre le premier noued tout betement comme ceci :Fatal error: Uncaught exception 'DOMException' with message 'Not Found Error' in w:\apache\htdocs\technip_careers_xml\admin\func.php:130 Stack trace: #0 w:\apache\htdocs\technip_careers_xml\admin\func.php(130): DOMNode->insertBefore(Object(DOMElement), Object(DOMElement)) #1 w:\apache\htdocs\technip_careers_xml\admin\func.php(166): update_Avail('sqdqsdqsdqs', 'qsdqsd', '2', '1') #2 {main} thrown in w:\apache\htdocs\technip_careers_xml\admin\func.php on line 130
cela focntionne parfaitement, je ne comrpends dons pas pourquoi en recherchant sur un attribut cela plante.
Code : Sélectionner tout - Visualiser dans une fenêtre à part $query = $Xpath->query("/career/type");
Avez vous uen idee ?
Partager