zoukankan      html  css  js  c++  java
  • 使用SAXParser解析XML文档的实例

    使用SAXParser解析时,一定要记得重写方法.

    ------------

    package ParseXML;
    
    import java.io.IOException;
    
    import javax.xml.parsers.ParserConfigurationException;
    import javax.xml.parsers.SAXParser;
    import javax.xml.parsers.SAXParserFactory;
    
    import org.xml.sax.Attributes;
    import org.xml.sax.SAXException;
    import org.xml.sax.helpers.DefaultHandler;
    
    /**
     * 使用SAXParse解析XML文档
     * @author 小王同学
     *
     */
    public class TestSAXParse {
        public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException {
            //1.创建SaxParseFactory对象
            SAXParserFactory spf =SAXParserFactory.newInstance();
            //2.创建SAXparser对象(解析器)
            SAXParser parser =spf.newSAXParser();
            //3.创建一个DefultHandler的子类
            BookDefaultHandler bdh =new BookDefaultHandler();
            //4.调用parse方法
            parser.parse("book.xml", bdh);
        }
    
    }
    class BookDefaultHandler extends DefaultHandler {
        //重写第一个方法
        @Override
        public void startDocument() throws SAXException {//解析开始时调用
            System.out.println("解析开始");
            super.startDocument();
        }
        @Override
        public void endDocument() throws SAXException {//解析结束时调用
            System.out.println("解析结束");
            super.endDocument();
        }
        //解析xml文档中的节点时调用
        @Override
        public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
            // TODO Auto-generated method stub
            super.startElement(uri, localName, qName, attributes);
            if(qName.equals("book")){
                //获取所有的属性
                int count = attributes.getLength();
                for(int i=0;i<count;i++){
                    System.out.println("属性:"+attributes.getQName(i)+"	"+"属性值:"+attributes.getValue(i));
                }
                
            }else if(!"books".equals(qName)&&!"book".equals(qName)){
                System.out.print("节点的名称:"+qName+"	");
            }
        }
        //解析节点结束时调用 
        @Override
        public void endElement(String uri, String localName, String qName) throws SAXException {
            // TODO Auto-generated method stub
            super.endElement(uri, localName, qName);
        }
        //这个方法是用来获取节点的值的方法
        @Override
        public void characters(char[] ch, int start, int length) throws SAXException {
            // TODO Auto-generated method stub
            super.characters(ch, start, length);
            String value =new String(ch,start,length);
            if(!value.trim().equals("")){
                System.out.println("	节点内容:"+value.trim());
            }
            
        }
    }

    ----------------------这里是输入图



  • 相关阅读:
    一行代码轻松修改 Text Field 和 Text View 的光标颜色 — By 昉
    六种手势识别,你用了哪些?——董鑫
    Mac 屏幕录制Gif 制作 By-胡罗
    利用ICMP协议的PING命令获取客户端当前网络质量 by徐文棋
    iOS加载Gif图片的N种方式 By-H罗
    [手游项目3]-10-Go语言atomic原子操作
    [手游项目3]-9-Go语言sync.Map(在并发环境中使用的map)
    LRU原理和Redis实现
    Cleanup failed to process the following paths错误的解决
    [手游项目3]-8-排行榜redis实现
  • 原文地址:https://www.cnblogs.com/xw1024/p/11245310.html
Copyright © 2011-2022 走看看