zoukankan      html  css  js  c++  java
  • xml解析中的sax解析


    title: xml解析中的sax解析
    tags:
    grammar_cjkRuby: true

    SAXPasser 类:
    parser(File file, DefaultHandler handler):该方法使用sax解析方式去解析xml文档

    DefaultHandler类:重写该类中的一些方法,用于处理xml文档
    startElement( .... String qName): 读到开始标签时调用
    characterrs(char[] ch,int start,int length); 读到文本内容时调用(包括空格和换行)
    endElement(.....String qName): 读到结束标签时调用

    这个不多说下面代码:

    package gz.itcast.c_sax;
    
    import java.io.File;
    
    import javax.xml.parsers.SAXParser;
    import javax.xml.parsers.SAXParserFactory;
    
    /**
     * 读取contact.xml文件,完整输出文档内容
     * @author APPle
     *
     */
    public class Demo2 {
    public static void main(String[] args)throws Exception {
    	//1.创建SAXParser
    	SAXParser parser = SAXParserFactory.newInstance().newSAXParser();
    	//2.读取xml文件
    	MyDefaultHandler2 handler = new MyDefaultHandler2();
    	parser.parse(new File("./src/contact.xml"), handler);
    	String content = handler.getContent();
    	System.out.println(content);
    }
    
    }
    

    DefaultHandlet类中执行方法

    package gz.itcast.c_sax;
    
    import org.xml.sax.Attributes;
    import org.xml.sax.SAXException;
    import org.xml.sax.helpers.DefaultHandler;
    /**
     * SAX处理器程序
     * @author APPle
     */
    public class MyDefaultHandler2 extends DefaultHandler {
    	//存储xml文档信息
    	private StringBuffer sb = new StringBuffer();
    	
    	//获取xml信息
    	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+""");
    			}
    		}
    		sb.append(">");
    	}
    	
    	/**
    	 * 文本内容
    	 */
    	@Override
    	public void characters(char[] ch, int start, int length)
    			throws SAXException {
    		//得到当前读取的文本
    		String content = new String(ch,start,length);
    		sb.append(content);
    	}
    	
    	/**
    	 * 结束标签
    	 */
    	@Override
    	public void endElement(String uri, String localName, String qName)
    			throws SAXException {
    		sb.append("</"+qName+">");
    	}
    }
  • 相关阅读:
    安卓逆向5.Android Studio JNI静态注册(C++和Java互操作)
    安卓逆向二
    ASP.Net Core Web 在IIS下的发布流程
    Android Studio安装记录
    Vistual studio智能提示不显示或者显示为英文的解决办法
    (转)程序语言理论的学习对于程序员教育的作用
    普通用户ssh无密码登录设置
    (转)完全用GNU/Linux工作 by 王珢
    (转)谁是真正的程序语言专家
    java操作XML
  • 原文地址:https://www.cnblogs.com/renboqie/p/5571782.html
Copyright © 2011-2022 走看看