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

SAX解析XML

发布时间:2020-12-16 00:33:42 所属栏目:百科 来源:网络整理
导读:SAX工作原来就是对文档进行顺序扫描,当扫描文档、元素的开始与结束等地方时通知事件处理函数——startDocument()、endDocument()、startElement()、endElement()等等 ContentHandler是JAVA类包中一个特殊的SAX接口,位于org.xml.sax包中,它包含了很多接口

SAX工作原来就是对文档进行顺序扫描,当扫描文档、元素的开始与结束等地方时通知事件处理函数——startDocument()、endDocument()、startElement()、endElement()等等

ContentHandler是JAVA类包中一个特殊的SAX接口,位于org.xml.sax包中,它包含了很多接口需要实现,因为我们只需要其中复写某一部分的代码,所以没有必要实现接口的全部内容,所以我们一般继承它的子类DefaultHandler

public class SAXxmlActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
		try {
			//得到SAX解析工厂
			SAXParserFactory saxFactory = SAXParserFactory.newInstance();
			//通过SAX解析工厂得到SAX解析器
			SAXParser saxParser = saxFactory.newSAXParser();
			//得到读取XML文件流对象
			XMLReader xmlReader = saxParser.getXMLReader();
			//设置数据元,即要操作的数据流句柄
			xmlReader.setContentHandler(new ReadXML());
			//解析XML文件
			xmlReader.parse(new InputSource(new FileInputStream("/sdcard/connection.xml")));
		} catch (ParserConfigurationException e) {
			System.out.println("1");
		} catch (SAXException e) {
			System.out.println("2");
		} catch (FileNotFoundException e) {
			System.out.println("3");
		} catch (IOException e) {
			System.out.println("4");
		}
    }
}

解析XML文件监听的事件

public class ReadXML extends DefaultHandler {
	@Override
	public void startDocument() throws SAXException {
		System.out.println("startDocument");
	}
	@Override
	public void endDocument() throws SAXException {
		System.out.println("endDocument");
	}
	@Override
	public void endElement(String uri,String localName,String qName)
			throws SAXException {
		System.out.println("uri : " + uri);
		System.out.println("localName : " + localName);
		System.out.println("qName : " + qName);
	}
	@Override
	public void startElement(String uri,String qName,Attributes attributes) throws SAXException {
		System.out.println("startElement");
	}
}

(编辑:李大同)

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

    推荐文章
      热点阅读