加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

使用Sax2方式解析xml

发布时间:2020-12-16 05:24:25 所属栏目:百科 来源:网络整理
导读:strings.xml ?xml version="1.0" encoding="utf-8"?resources string name="app_name"Sax2/string string name="action_settings"Settings/string string name="hello_world"Hello world!/string testtest/test/resources 将strings.xml放到android工程目录a

strings.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <string name="app_name">Sax2</string>
    <string name="action_settings">Settings</string>
    <string name="hello_world">Hello world!</string>
    <test>test</test>

</resources>

将strings.xml放到android工程目录assets下

MainActivity.java

package com.example.sax2;

import java.io.IOException;
import java.io.InputStream;

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;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		View view = new View(getApplicationContext());
		setContentView(view);
		InputStream inputStream = null;
		try {
			inputStream = getAssets().open("strings.xml");
			SAXParserFactory factory = SAXParserFactory.newInstance();
			SAXParser parser = factory.newSAXParser();
			parser.parse(inputStream,new XmlHandler());
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}catch (ParserConfigurationException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (SAXException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}	
		
	}

	private class XmlHandler extends DefaultHandler {

		private static final String TAG = "XmlHandler";
		
		@Override
		public void startDocument() throws SAXException {
			Log.d(TAG,"startDocument");
			super.startDocument();
		}

		@Override
		public void endDocument() throws SAXException {
			Log.d(TAG,"endDocument");
			super.endDocument();
		}

		@Override
		public void startPrefixMapping(String prefix,String uri)
				throws SAXException {
			Log.d(TAG,"startPrefixMapping " + " prefix:" + prefix + " uri:" + uri);
			super.startPrefixMapping(prefix,uri);
		}

		@Override
		public void endPrefixMapping(String prefix) throws SAXException {
			Log.d(TAG,"endPrefixMapping " + " prefix:" + prefix);
			super.endPrefixMapping(prefix);
		}

		@Override
		public void startElement(String uri,String localName,String qName,Attributes attributes) throws SAXException {
			Log.d(TAG,"startElement " + " uri:" + uri + " localName:" + localName + " qName:" + qName + " attributes:" + attributes);
			if (qName.equals("string")) {
				String name = attributes.getValue("name");
				Log.d(TAG,"startElement " + " name:" + name);
			}
			super.startElement(uri,localName,qName,attributes);
		}

		@Override
		public void endElement(String uri,String qName)
				throws SAXException {
			Log.d(TAG,"endElement " + " uri:" + uri + " localName:" + localName + " qName:" + qName);
			super.endElement(uri,qName);
		}

		@Override
		public void characters(char[] ch,int start,int length)
				throws SAXException {
			String string = new String(ch,start,length);
			Log.d(TAG,"characters " + " ch:" + string + " start:" + start + " length:" + length);
			super.characters(ch,length);
		}
		
	}
}
打印日志:

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读