关闭

SAX解析XML

200人阅读 评论(0) 收藏 举报

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 localName, String qName,
			Attributes attributes) throws SAXException {
		System.out.println("startElement");
	}
}

 

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:312357次
    • 积分:8738
    • 等级:
    • 排名:第2257名
    • 原创:1096篇
    • 转载:14篇
    • 译文:0篇
    • 评论:5条
    最新评论