Bonjour à tous,
J'ai une applet java qui reçoit du texte en xml pour l'afficher dans un JTextPane.
Pour parser mon XML j'utilise l'API DOM
Voici un exemple de xml reçu par l'applet :
Le xml que je reçois, je le stocke dans une String que je stocke dans un InputStream pour le donner ensuite au parser DOM.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 <?xml version="1.0" encoding="UTF-8" standalone="yes"?><TEXTE><TI><P>Des espaces verts pour une espérance de vie accrue</P><P>De nouvelles recherches montrent que les gens vivant à proximité des espaces verts vivent plus longtemps</P></TI><TX><P>Des espaces verts</P></TX></TEXTE>
Voici le code :
Actuellement pour definir un paragraphe et donc un retour chariot j'utilise les <P></P>. le probleme est lors de la récupération des balises je recupere bien les balises TI et TX mais pas les balises P.
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 public ParserArticleXML(String contenu) { InputStream input = new ByteArrayInputStream(contenu.getBytes("UTF-8")); // on ajoute la propriété xml à la JVM System.setProperty("javax.xml.parsers.DocumentBuilderFactory", "com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl"); // on crée une fabrique de document xml DocumentBuilderFactory fabrique = DocumentBuilderFactory.newInstance(); // A partir de notre fabrique, on recupere un constructeur DOM DocumentBuilder constructeur = fabrique.newDocumentBuilder(); // on parse le fichier xml et on recupere le document xml Document doc = constructeur.parse(input); // on commence l'analyse du document if(doc.hasChildNodes()) { nodePrincipal = doc.getFirstChild(); if(nodePrincipal.getNodeName().equalsIgnoreCase("TEXTE") && nodePrincipal.hasChildNodes() == true) { childList = nodePrincipal.getChildNodes(); for(i=0; i<childList.getLength(); i++) { childNode = childList.item(i); nodeName = childNode.getNodeName(); nodeTextContent = childNode.getTextContent(); // on remplit des ArrayLists pour le moment tableauBalise.add(nodeName); tableauContenu.add(nodeTextContent); } } } }
J'ai peut etre fait une erreur dans le parsage, donc si vous avez des idées.
Merci beaucoup.
Ludovic
Partager