Menu

2013-01-09  Edit

Frédéric Glorieux
:::java
package fr.crim.a2012.saxigraph;

import java.util.Enumeration;
import java.util.Hashtable;

import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;

import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.XMLReader;
import org.xml.sax.helpers.DefaultHandler;

public class SAXWordCount extends DefaultHandler {

    private Hashtable<String,Integer> tags;
    private StringBuilder text=new StringBuilder();
    /**
     * Ajoute du texte à la variable d'instance 
     * Attention, si rien n'est fait à l'ouverture et à la femeture 
     * d'éléments, cette variable contiendra tout le texte du fichier
     * (sans balises) 
     */
    public void characters(char ch[], int start, int length){
        text.append(ch, start, length);
    }
    @Override
    public void startDocument() throws SAXException {
        tags = new Hashtable<String,Integer>();
    }

    @Override
    public void startElement(String namespaceURI, String localName, String qName, Attributes atts) throws SAXException {

        String key = localName;
        Object value = tags.get(key);

        if (value == null) {
            tags.put(key, new Integer(1));
        } else {
            int count = ((Integer) value).intValue();
            count++;
            tags.put(key, new Integer(count));
        }
    }

    @Override
    public void endDocument() throws SAXException {
        System.out.println(text);
        /*
        Enumeration<String> e = tags.keys();
        while (e.hasMoreElements()) {
            String tag = (String) e.nextElement();
            int count = ((Integer) tags.get(tag)).intValue();
            if(count>1)System.out.println("<" + tag + "> " + count );
        }
        */
    }

    static public void main(String[] args) throws Exception {
        SAXParserFactory spf = SAXParserFactory.newInstance();
        spf.setNamespaceAware(true);
        SAXParser saxParser = spf.newSAXParser();
        XMLReader xmlReader = saxParser.getXMLReader();
        xmlReader.setContentHandler(new SAXWordCount());
        xmlReader.parse("rsc/monfichier.xml");
    }
}

Related

Wiki: 2012-2013

Discussion

Anonymous
Anonymous

Add attachments
Cancel