title: xml解析中的sax解析
tags: grammar_cjkRuby: true ---SAXPasser 类:
parser(File file, DefaultHandler handler):该方法使用sax解析方式去解析xml文档DefaultHandler类:重写该类中的一些方法,用于处理xml文档
startElement( .... String qName): 读到开始标签时调用 characterrs(char[] ch,int start,int length); 读到文本内容时调用(包括空格和换行) endElement(.....String qName): 读到结束标签时调用这个不多说下面代码:
package gz.itcast.c_sax;import java.io.File;import javax.xml.parsers.SAXParser;import javax.xml.parsers.SAXParserFactory;/** * 读取contact.xml文件,完整输出文档内容 * @author APPle * */public class Demo2 {public static void main(String[] args)throws Exception { //1.创建SAXParser SAXParser parser = SAXParserFactory.newInstance().newSAXParser(); //2.读取xml文件 MyDefaultHandler2 handler = new MyDefaultHandler2(); parser.parse(new File("./src/contact.xml"), handler); String content = handler.getContent(); System.out.println(content);}}
DefaultHandlet类中执行方法
package gz.itcast.c_sax;import org.xml.sax.Attributes;import org.xml.sax.SAXException;import org.xml.sax.helpers.DefaultHandler;/** * SAX处理器程序 * @author APPle */public class MyDefaultHandler2 extends DefaultHandler { //存储xml文档信息 private StringBuffer sb = new StringBuffer(); //获取xml信息 public String getContent(){ return sb.toString(); } /** * 开始标签 */ @Override public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { sb.append("<"+qName); //判断是否有属性 if(attributes!=null){ for(int i=0;i"); } /** * 文本内容 */ @Override public void characters(char[] ch, int start, int length) throws SAXException { //得到当前读取的文本 String content = new String(ch,start,length); sb.append(content); } /** * 结束标签 */ @Override public void endElement(String uri, String localName, String qName) throws SAXException { sb.append(" "); }}