Suppression de balises XML
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 :
Code:
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> |
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.
Voici le code :
Code:
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);
}
}
}
} |
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.
J'ai peut etre fait une erreur dans le parsage, donc si vous avez des idées.
Merci beaucoup.
Ludovic