【Android 学习记录】SAX解析xml文件

/**
 * Created by 123 on 2018/2/24.
 *
 * 使用SAX解析XML
 */

public class SAX extends DefaultHandler {

    private static final String TAG = "SAX";

    private String nodeName;

    private StringBuilder id;

    private StringBuilder name;

    private StringBuilder version;


    //开始解析xml的时候调用
    @Override
    public void startDocument() throws SAXException {
        id=new StringBuilder();
        name=new StringBuilder();
        version=new StringBuilder();
    }

    //开始解析某个节点的时候调用
    @Override
    public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
        nodeName=localName;//记录当前节点名
    }

    //获取节点内容时候调用
    @Override
    public void characters(char[] ch, int start, int length) throws SAXException {

        //根据当前的节点名称判断将内容添加到拿一个StringBuilder之中
        if("id".equals(nodeName)){
            id.append(ch,start,length);
        }else if("name".equals(nodeName)){
            name.append(ch,start,length);
        }else if("version".equals(nodeName)){
            version.append(ch,start,length);
        }

    }

    //完成解析某个节点时候调用
    @Override
    public void endElement(String uri, String localName, String qName) throws SAXException {

        if("app".equals("localName")){
            Log.d(TAG, "id:"+id.toString().trim());
            Log.d(TAG, "name:"+name.toString().trim());
            Log.d(TAG, "version:"+version.toString().trim());

            //最后清空StringBuilder
            id.setLength(0);
            name.setLength(0);
            version.setLength(0);
        }

    }

    //完成整个xml解析的时候调用
    @Override
    public void endDocument() throws SAXException {
        super.endDocument();
    }



    /**
     * 调用这个类解析xml文件
     * */

    private void parseXMLWithSAX(String xmlData){

        try{
            SAXParserFactory factory=SAXParserFactory.newInstance();
            XMLReader xmlReader=factory.newSAXParser().getXMLReader();

            //实例设置到XMLReader            SAX sax=new SAX();
            xmlReader.setContentHandler(sax);

            //开始执行解析
            xmlReader.parse(new InputSource(new StringReader(xmlData)));

        }catch (Exception e){

        }

    }




}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值