XML文件操作(二)

  • SAX(Simple APIs for XML)解析操作

与DOM操作不同的是,SAX采用的是一种顺序的模式进行访问,且采用的是部分读取,是一种快速读取XML数据的方式,只能读取不能修改,使用SAX解析器进行操作时会触发一系列的事件

主要事件:startDocument文档开始、endDocument文档结束、startElement元素开始、endElement元素结束、characters元素内容

读取操作

  • 建立解析工厂
  • 构造解析器
  • 解析XML

public class MySax extends DefaultHandler {
	@Override
	public void startDocument() throws SAXException {
		System.out.println("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
	}
	
	@Override
	public void endDocument() throws SAXException {
		System.out.println("\n文档读取结束");
	}
	
	@Override
		public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
			System.out.print("<");
			System.out.print(qName);
			if(attributes!=null) {
				for (int i = 0; i < attributes.getLength(); i++) {
					System.out.print(" "+attributes.getQName(i)+"=\""+attributes.getValue(i)+"\"");
				}
			}
			System.out.print(">");
		}
	@Override
		public void endElement(String uri, String localName, String qName) throws SAXException {
		System.out.print("</");
		System.out.print(qName);
		System.out.print(">");
		}
	@Override
	public void characters(char[] ch, int start, int length) throws SAXException {
		System.out.print(new String(ch, start, length));
	}
	
}
@Test
	public void testRead() throws ParserConfigurationException, SAXException, IOException {
		//建立解析工厂
		SAXParserFactory factory=SAXParserFactory.newInstance();
		//构造解析器
		SAXParser parser=factory.newSAXParser();
		//解析XML
		parser.parse(this.getClass().getClassLoader().getResource("xml.xml").getPath(), new MySax());
	}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值