上一篇谢了解析原理和过程,这里应用代码直观认识这个原理:

新建Demo1类:


import java.io.File;import javax.xml.parsers.SAXParser;import javax.xml.parsers.SAXParserFactory;/** * 第一个SAX读取xml文件程序 * @author APPle * */public class Demo1 {public static void main(String[] args) throws Exception{//1.创建SAXParser对象//SAXParser parser = SAXParserFactory.newInstance().newSAXParser();//2.调用parse方法/** * 参数一: xml文档 * 参数二: DefaultHandler的子类,默认基类,因此没法new。用子类 */parser.parse(new File("./src/contact.xml"), new MyDefaultHandler());//使用指定的 DefaultHandler 将指定文件的内容解析为 XML。这里一定要自定义MyDefaultHandler类,且在里面实现业务逻辑。不理解先死记住这种模式。}}


接着给出自定义继承DefaultHandler的MyDefaultHandler



import org.xml.sax.Attributes;import org.xml.sax.SAXException;import org.xml.sax.helpers.DefaultHandler;/** * SAX处理程序(如何解析xml文档) * @author APPle * */public class MyDefaultHandler extends DefaultHandler {/** * 开始文档时调用 */@Overridepublic void startDocument() throws SAXException {System.out.println("MyDefaultHandler.startDocument()");}/** * 开始标签时调用 * @param qName: 表示开始标签的标签名 * @param attributes: 表示开始标签内包含的(属性)【列表】 */@Overridepublic void startElement(String uri, String localName, String qName,Attributes attributes) throws SAXException {System.out.println("MyDefaultHandler.startElement()-->"+qName);}/** * 结束标签时调用 * @param qName: 结束标签的标签名称 */@Overridepublic void endElement(String uri, String localName, String qName)throws SAXException {System.out.println("MyDefaultHandler.endElement()-->"+qName);}/** * 读到文本内容的时调用 * @param ch: 表示当前读完的所有文本内容 * @param start: 表示当前文本内容的开始位置 * @param length: 表示当前文本内容的长度  */ @Overridepublic void characters(char[] ch, int start, int length)throws SAXException {//得到当前文本内容String content = new String(ch,start,length);System.out.println("MyDefaultHandler.characters()-->"+content);}/** * 结束文档时调用 */@Overridepublic void endDocument() throws SAXException {System.out.println("MyDefaultHandler.endDocument()");}}

打印输出,更直观认识sax解析过程。下一篇给出应用案例

以上就是XML解析之SAX解析过程代码详解的内容,更多相关内容请关注PHP中文网(www.php.cn)!

更多相关文章

  1. XML中的标签与元素的使用具体介绍
  2. XML文件要有根标签(错误)的代码解决分享
  3. cdata标签如何使用
  4. 解决matplotlib文字标签遮挡问题
  5. 阻止a标签跳转,且将a的get提交方式转化为post提交
  6. Jquery选择带有融合表的标签\复选框
  7. JQuery标签输入插件ASP.NET不工作
  8. 网页标签功能插: jQuery tags input 翻译api
  9. 如何将一个div中的a标签放在另一个div的a标签之前

随机推荐

  1. C/C++比java效率高的原因?
  2. 新手求教RandomAccessFile读写文件到底写
  3. Java中double型数组的HashCode产生
  4. 【java工具类】网站安全---将特殊字符编
  5. mvn依赖的jar,在项目中无法引用,求大神指点
  6. javascript(六)js事件绑定浏览器兼容解决方
  7. java httpclient访问某些网页报403错误
  8. 使用js模仿java的实体类对类/对象进行get
  9. Java——IO类,字节流读数据
  10. 关于的写法