⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 saxtagcount.java

📁 java编程入门配套光盘第八章代码
💻 JAVA
字号:
import javax.xml.parsers.*;import org.xml.sax.*;import org.xml.sax.helpers.*;import java.util.*;import java.io.*;public class SAXTagCount extends DefaultHandler {    private Hashtable tagsList;    // XML文件的开始    public void startDocument() throws SAXException     {        // 建立标记的Hashtable对象        tagsList = new Hashtable();    }    // 元素的开始    public void startElement(String namespaceURI, String localName,                String qName, Attributes atts) throws SAXException     {        String tagName = qName;        int count;        // 检查是否有此标记        Object value = tagsList.get(tagName);        if (value == null)         {            // 不存在            count = 1;        } else {            // 存在, 加一            count = ((Integer)value).intValue();            count++;        }        tagsList.put(tagName, new Integer(count));    }    // 元素的内容    public void characters(String chars) throws SAXException     {    }    // 元素的结束    public void endElement(String namespaceURI, String localName,                String qName) throws SAXException     {    }    // 文件结束    public void endDocument() throws SAXException     {        Enumeration enum = tagsList.keys();        while (enum.hasMoreElements())         {            String tagName = (String)enum.nextElement();            // 获取计数            int count = ((Integer)tagsList.get(tagName)).intValue();            System.out.println(tagName + " (" + count + ")");        }    }    // 将文件名转换成URL    private static String convertToURL(String name)     {        String path = new File(name).getAbsolutePath();        if (File.separatorChar != '/')         {            path = path.replace(File.separatorChar, '/');        }        if (!path.startsWith("/")) {            path = "/" + path;        }        return "file:" + path;    }        static public void main(String[] args)     {        String filename = null;        boolean validation = false;          filename = "08_01.xml";                SAXParserFactory spf = SAXParserFactory.newInstance();        spf.setValidating(validation);                XMLReader xmlReader = null;        try {            // 创建一个JAXP SAXParser            SAXParser saxParser = spf.newSAXParser();                        // 得到封装的SAX XMLReader            xmlReader = saxParser.getXMLReader();        } catch (Exception ex) {            System.err.println(ex);            System.exit(1);        }             // 设置XMLReader的ContentHandler        xmlReader.setContentHandler(new SAXTagCount());        // 在分析之前设置ErrorHandler        xmlReader.setErrorHandler(new MyErrorHandler());        try {            // 告诉XMLReader分析XML文档            xmlReader.parse(convertToURL(filename));        } catch (SAXException se) {            System.err.println(se.getMessage());            System.exit(1);        } catch (IOException ioe) {            System.err.println(ioe);            System.exit(1);        }    }      // 报告错误和警告    private static class MyErrorHandler implements ErrorHandler     {       //得到分析异常的细节        private String getParseExceptionInfo(SAXParseException spe)         {            String systemId = spe.getSystemId();            if (systemId == null) {                systemId = "null";            }            String info = "URI=" + systemId +            " Line=" + spe.getLineNumber() +            ": " + spe.getMessage();            return info;        }        public void warning(SAXParseException spe) throws SAXException {            System.out.println("Warning: " + getParseExceptionInfo(spe));        }        public void error(SAXParseException spe) throws SAXException {            String message = "Error: " + getParseExceptionInfo(spe);            throw new SAXException(message);        }        public void fatalError(SAXParseException spe) throws SAXException {            String message = "Fatal Error: " + getParseExceptionInfo(spe);            throw new SAXException(message);        }    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -