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