Bonjour,
Je débute sous Java et l'on me demande, dans un premier temps, de récupérer un numéro de question ainsi qu'un numéro de client depuis un fichier XML.
J'ai donc suivi le tuto de ce site (super bien fait d'ailleurs) pour gérer les fichiers XML. Je me suis orienté vers le DOM via javax.
Voici mon code en java :
Et voici le fichier 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
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
106
107
108
109
110
111
112
113
114
115 import javax.xml.parsers.*; import org.w3c.dom.*; import org.xml.sax.*; import java.io.*; public class TestXML { // String toto; // final String test = "45"; static String uri; static String xVersion; static String xEncoding; static String iEncoding; static boolean standalone; static boolean strictError; static int cpt = 0; static String NumQuestion; static String Noclie; static String DateQuestion; /*Les propriétés du document*/ public static void printDOMInfos(Document document){ uri = document.getDocumentURI(); //Version? xVersion = document.getXmlVersion(); //UTF-8? xEncoding = document.getXmlEncoding(); iEncoding = document.getInputEncoding(); standalone = document.getXmlStandalone(); strictError = document.getStrictErrorChecking(); } public static void printNode(Node node){ cpt++; System.out.println(node + " " + cpt); NodeList nodes = node.getChildNodes(); for(int i=0; i<nodes.getLength(); i++){ Node n = nodes.item(i); printNode(n); } } public static void printDocument(Document document){ Element racine = document.getDocumentElement(); printNode(racine); } public static String ExtractQuestion(Document document){ Element racine = document.getDocumentElement(); return racine.getChildNodes().item(1).getTextContent(); } public static String ExtractNoclie(Document document){ Element racine = document.getDocumentElement(); return racine.getChildNodes().item(3).getTextContent(); } public static String ExtractDate(Document document){ Element racine = document.getDocumentElement(); return racine.getChildNodes().item(5).getTextContent(); } /** * @param args */ public static void main(String[] XmlFile) { try { // cration d'une fabrique de documents DocumentBuilderFactory fabrique = DocumentBuilderFactory .newInstance(); // cration d'un constructeur de documents DocumentBuilder constructeur = fabrique.newDocumentBuilder(); // lecture du contenu d'un fichier XML avec DOM File xml = new File(XmlFile[0]); // System.out.println(xml.exists()); Document document = constructeur.parse(xml); //On récupère les propriétés du document printDOMInfos(document); //printDocument(document); //GetQuestionNum(document); NumQuestion = ExtractQuestion(document); Noclie = ExtractNoclie(document); DateQuestion = ExtractDate(document); System.out.println(NumQuestion); System.out.println(Noclie); System.out.println(DateQuestion); } catch (ParserConfigurationException pce) { System.out.println("Erreur de configuration du parseur DOM"); System.out.println("lors de l'appel fabrique.newDocumentBuilder();"); } catch (SAXException se) { se.printStackTrace(); System.out.println("Erreur lors du parsing du document"); System.out.println("lors de l'appel construteur.parse(xml)"); } catch (IOException ioe) { System.out.println("Erreur d'entre/sortie"); System.out.println("lors de l'appel construteur.parse(xml)"); } } }
Comment faire lire, par exemple, l'ID sans passer par un :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 <?xml version="1.0" encoding="UTF-8"?> <MESSAGE xmlns="http://www.xxxx.fr/file.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.xxxx.fr/file.xsd file:/N:/AAA/BBB/CCCC/DDDD/http://www.xxxx.fr/file.xsd"> <ID>7d85b761-8d36-4f50-a5c5-9e5c72a11ee2</ID> <N_CLIENT>12345</N_CLIENT> <DATE>2006-05-04T18:13:51.0Z</DATE> </MESSAGE>
racine.getChildNodes().item(3).getTextContent();
En utilisant un document.getElementsByTagName("ID");, cela me retourne rien...
Merci
Portekoi
Partager