• 使用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());
            }
            
        }
    }

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



  • 相关阅读:
    linux那点事儿(六)进程管理详解(推荐)
    linux那点事儿(下)
    视图的架构刷新和绑定
    HttpHandler开发的两个重点问题
    RichTextBox控件的几点有意思的东西
    重复输入某个字符(C++,C#)
    几个博客系统点评
    怎么理解符号整数的取值范围(C++)
    为SSIS编写自定义任务项(Task)之进阶篇
    LINQ TO XML之判断不存在行则插入
  • 原文地址:https://www.cnblogs.com/xw1024/p/11245310.html
Copyright © 2020-2023  润新知