SAX解析xml例子

 

import java.io.File;

import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;


public class Test1{

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		String fileUri = "D:\\file\\test2.tmx";
		TestHandler handler = new TestHandler();
		
		SAXParserFactory spf = SAXParserFactory.newInstance();
		try {
			SAXParser sp = spf.newSAXParser();
			sp.parse(new File(fileUri), handler); //执行解析
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

 

 写一个类继承 DfaultHandler ,重写相关方法(startDocument,endDocument,startElement,endElement,characters)

 

 

 

 

下面为 XXXHandler 的代码

import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;

public class TestHandler extends DefaultHandler {

	private String tagValue;	//标签值
	
	//解析资源
	@Override
	public void startDocument() throws SAXException{
		System.out.println("开始解析");
	}
	
	@Override
	public void endDocument() throws SAXException{
		System.out.println("结束解析");
	}
	
	//解析元素
	/**
	 * 开始解析一个元素
	 * @param qName	标签名
	 * @param attributes 属性
	 */
	@Override
	public void startElement(String uri,String localName,String qName,Attributes attributes) throws SAXException{
		System.out.println(qName + "开始");
		//属性
		if (attributes!=null&&attributes.getLength()!=0){
			System.out.println("属性:");
			for (int i=0;i<attributes.getLength();i++){
				System.out.print(attributes.getQName(i)+"=");	//属性名
				System.out.print(attributes.getValue(i)+" ");	//属性值
			}
			System.out.println();
		}
	}
	/**
	 * 结束一个元素的解析
	 * 遇到结束标签时调用此方法
	 * 通常在此方法对标签取值并处理
	 */
	@Override
	public void endElement(String uri, String localName,String qName) throws SAXException{
		System.out.println(qName + "标签值:" + tagValue);
		System.out.println(qName + "结束");
	}
	
	//所有xml文件中的字符都会放到ch[]中
	public void characters(char ch[],int start,int length) throws SAXException{
		tagValue=new String(ch,start,length).trim();
	}
}

你可能感兴趣的:(xml)