• XML解析:SAX解析


    package hf.firstclass.a_SAX;
    
    import java.io.File;
    
    import javax.xml.parsers.SAXParser;
    import javax.xml.parsers.SAXParserFactory;
    
    /**
     * 将XML标签信息原样打印到控制台
     * @author LZK
     *
     */
     //SAX解析主出程序
    public class TestSAX {
        public static void main(String[] args) throws Exception {
            //1.得到解析器工厂
            SAXParserFactory factory=SAXParserFactory.newInstance();
            //2.得到解析器
            SAXParser parser=factory.newSAXParser();
            //3.解析XML文件
            //建立一个处理器
            MyDefaultHandler2 handler = new MyDefaultHandler2();
            //解析文件
            parser.parse(new File("./src/contact.xml"), handler);
            String content=handler.getContent();
            //在控制台上打印出内容
            System.out.println(content);
        }
    }
    
    
    
    
    package hf.firstclass.a_SAX;
    import org.xml.sax.Attributes;
    import org.xml.sax.SAXException;
    import org.xml.sax.helpers.DefaultHandler;
    //SAX处理器程序
    public class MyDefaultHandler2 extends DefaultHandler{
        //建立一个容器,用于存储数据
        private StringBuilder sb=new StringBuilder();
        //提供一个方法,将容器内容返回出去
        public String getContent(){
            return sb.toString();
        }
        @Override
        public void startElement(String uri, String localName, 
                String qName, Attributes attributes) throws SAXException {
            sb.append("<"+qName);
            //判断标签是否有属性,有的话就往容器里添加
            if(attributes !=null){
                for(int i=0;i<attributes.getLength();i++){
                    //根据角标获取名
                    String attrName=attributes.getQName(i);
                    //根据角标获取值
                    String attrValue=attributes.getValue(i);
                    sb.append(" "+attrName+"=""+attrValue+""");
                }
            }
            //实现的效果就像这样 <contact id="001" hobby="eat">
            sb.append(">");
        }
    
        @Override
        public void endElement(String uri, String localName, 
                String qName) throws SAXException {
            //添加结束标签
            sb.append("</"+qName+">");
        }
    
        @Override
        public void characters(char[] ch, int start, int
                length) throws SAXException {
            //添加文本内容
            String content=new String(ch,start,length);
            sb.append(content);
        }
    
    }
    
    
    源XML文件
    <?xml version="1.0" encoding="utf-8"?>
    <contact-list >
        <contact id="001" hobby="eat">
            <name>张三</name>
            <gender>男</gender>
            <age>22</age>
            <phone>17728394033</phone>
            <email>1014420122@qq.com</email>
            <address>130号</address>
        </contact>
        <contact id="002" hobby="drink">
            <name>李四</name>
            <gender>女</gender>
            <age>23</age>
            <phone>13721102938</phone>
            <email>2971821987@qq.com</email>
            <address>131号</address>
        </contact>
    </contact-list> 
    
    很多事情即将开始,很多人的命运即将改变
  • 相关阅读:
    jmeter正则表达式+ForEach 控制器,遍历请求接口
    jmeter连接pg库,根据查询结果遍历请求操作
    centos yum源失效报错配置修改
    计算文件MD5值
    tomcat远程调试
    pip下载错误解决
    maven无法下载jar解决
    浅谈 Binomial Sums 相关
    P1551(并查集)
    HDU2612
  • 原文地址:https://www.cnblogs.com/liuzk/p/12458952.html
Copyright © 2020-2023  润新知