
{filelink=982}
import java.io.*;
import java.nio.MappedByteBuffer;
import java.nio.channels.FileChannel;
import javax.xml.stream.*;
import javax.xml.stream.events.*;
import java.util.Date;
import javax.xml.namespace.QName;
public class AnalyseXML implements javax.xml.stream.StreamFilter
{
public static final String getTypeEvt(int eventType) {
switch (eventType)
{
case XMLEvent.START_ELEMENT:
return "DEBUT_ELEMENT";
case XMLEvent.START_DOCUMENT:
return "DEBUT_DOCUMENT";
case XMLEvent.END_ELEMENT:
return "FIN_ELEMENT";
case XMLEvent.END_DOCUMENT:
return "FIN_DOCUMENT";
case XMLEvent.CHARACTERS:
return "CHARACTERES";
case XMLEvent.ATTRIBUTE:
return "ATTRIBUT";
case XMLEvent.COMMENT:
return "COMMENTAIRE";
case XMLEvent.PROCESSING_INSTRUCTION:
return "INSTRUCTION_PROCESSUS";
case XMLEvent.ENTITY_REFERENCE:
return "REFERENCE_ENTITE";
case XMLEvent.DTD:
return "DTD";
case XMLEvent.CDATA:
return "CDATA";
case XMLEvent.SPACE:
return "CDATA";
}
return "UNKNOWN_EVENT_TYPE";
}
private static void affichageTypeEvt(int eventType) {
System.out.print("Type Evénément: (" + eventType + "):");
System.out.println(getTypeEvt(eventType));
}
private static void affichageNom
(
XMLStreamReader xmlr,
int eventType)
{
if (xmlr.hasName())
{
System.out.println("Le Nom: " + xmlr.getLocalName());
}
}
private static void affichageText(XMLStreamReader xmlr)
{
if (xmlr.hasText())
{
System.out.println("Le Texte: " + xmlr.getText());
}
}
private static void affichageDonneePI(XMLStreamReader xmlr)
{
if (xmlr.getEventType() == XMLEvent.PROCESSING_INSTRUCTION)
{
System.out.println(" Donnée PI = " + xmlr.getPIData());
System.out.println(" Cible PI = " + xmlr.getPITarget());
}
}
private static void affichageAttributs(XMLStreamReader xmlr)
{
if (xmlr.getAttributeCount() > 0)
{
System.out.println("Les Attributs: ");
int compteur = xmlr.getAttributeCount();
for (int i = 0; i < compteur; i++)
{
QName nom = xmlr.getAttributeName(i);
String namespace = xmlr.getAttributeNamespace(i);
String type = xmlr.getAttributeType(i);
String prefix = xmlr.getAttributePrefix(i);
String valeur = xmlr.getAttributeValue(i);
System.out.println("PREFIX-ATTRIBUT: " + prefix);
System.out.println("NOM-ATTRIBUT: " + nom.toString());
System.out.println("TYPE-ATTRIBUT: " + type);
System.out.println("NAMESP-ATTRIBUT: " + namespace);
System.out.println("VALEUR-ATTRIBUT: " + valeur);
}
}
}
public boolean accept(XMLStreamReader reader)
{
if (!reader.isStartElement() && !reader.isEndElement())
{
return false;
} else
{
return true;
}
}
public static void main(String[] args) throws Exception
{
String nomFichier = "test.xml";
XMLInputFactory xmlFact = null;
xmlFact = XMLInputFactory.newInstance();
xmlFact.setProperty(XMLInputFactory.IS_REPLACING_ENTITY_REFERENCES,Boolean.TRUE);
xmlFact.setProperty(XMLInputFactory.IS_SUPPORTING_EXTERNAL_ENTITIES,Boolean.FALSE);
xmlFact.setProperty(XMLInputFactory.IS_NAMESPACE_AWARE, Boolean.TRUE);
xmlFact.setProperty(XMLInputFactory.IS_COALESCING, Boolean.TRUE);
System.out.println("Le FACTORY: " + xmlFact);
System.out.println("nomFichier = " + nomFichier);
FileInputStream fis = new FileInputStream(nomFichier);
XMLStreamReader xmlr = xmlFact.createFilteredReader(xmlFact.createXMLStreamReader(fis),new AnalyseXML());
int eventType = xmlr.getEventType();
affichageTypeEvt(eventType);
while (xmlr.hasNext())
{
eventType = xmlr.next();
affichageTypeEvt(eventType);
affichageNom(xmlr, eventType);
affichageText(xmlr);
if (xmlr.isStartElement())
{
affichageAttributs(xmlr);
}
affichageDonneePI(xmlr);
}
}
}