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();
}
}