zoukankan      html  css  js  c++  java
  • 使用SAX解析xml文档

    1.首先,在main方法中解析xml文档,具体代码如下:

    import org.w3c.dom.*;
    
    import javax.xml.parsers.DocumentBuilder;
    import javax.xml.parsers.DocumentBuilderFactory;
    import javax.xml.parsers.SAXParser;
    import javax.xml.parsers.SAXParserFactory;
    
    public class Main {
    
        public static void main(String[] args)  throws Exception {
            //创建一个文档解析器工厂
            SAXParserFactory factory=SAXParserFactory.newInstance();
            SAXParser parser=factory.newSAXParser();
    
            Handler handler=new Handler();
            parser.parse("src/server.xml",handler);
        }
    }

    其中,解析时parser.parse("src/server.xml",handler);第一个参数是xml文档的地址,第二个参数是具体的以什么规则解析这个xml文档。

    2.重写Handler类,以自由操纵如何具体的解析xml文档的具体值

    import org.xml.sax.Attributes;
    import org.xml.sax.SAXException;
    import org.xml.sax.helpers.DefaultHandler;
    
    public class Handler extends DefaultHandler {
    
        //全局变量用于存储书籍的编号
        int bookIndex=0;
        /*开始解析文档*/
        @Override
        public void startDocument() throws SAXException {
            super.startDocument();
            System.out.println("开始解析文档");
        }
        /*结束解析文档*/
        @Override
        public void endDocument() throws SAXException {
            super.endDocument();
            System.out.println("结束解析文档");
        }
        /*解析文档中所有的开始标签*/
        @Override
        public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
            super.startElement(uri, localName, qName, attributes);
            //开始解析book元素的属性
            if("book".equals(qName)){
                bookIndex++;
                System.out.println("==========开始解析第"+bookIndex+"本书============");
                //输出book元素的id属性,已知属性名,根据属性名获取属性值
                //System.out.println("book的属性值是"+attributes.getValue("id"));
    
                //不知道属性名,只能遍历所有属性
                int num=attributes.getLength();
                for(int i=0;i<num;i++){
                    System.out.print("第"+(i+1)+"个属性名是"+attributes.getQName(i));
                    System.out.println(" 第"+(i+1)+"个属性值是"+attributes.getValue(i));
                }
            }
            if(!qName.equals("book")&&!qName.equals("")){
                System.out.println(qName);
            }
    
        }
        /*解析文档中所有的结束标签*/
        @Override
        public void endElement(String uri, String localName, String qName) throws SAXException {
            super.endElement(uri, localName, qName);
            if("book".equals(qName)) {
                System.out.println("============结束解析第" + bookIndex + "本书==========");
            }
        }
    
        @Override
        public void characters(char[] ch, int start, int length) throws SAXException {
            super.characters(ch, start, length);
            String s=new String(ch,start,length);
            s=s.trim();
            if(!s.equals("")){
                System.out.println(s);
            }
    
        }
    }
  • 相关阅读:
    PHP Context学习系列《十》
    学习php记录《九》
    学习php记录《八》
    php学习记录《七》
    换到新工作后
    学习php记录《六》
    学习php记录《五》
    学习php记录《四》
    学习php记录《三》
    html基础
  • 原文地址:https://www.cnblogs.com/xiaoao/p/9630263.html
Copyright © 2011-2022 走看看