Menu

2013-01-09  Edit

Frédéric Glorieux
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





Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.