• 三、SAX 方式解析 XML 数据


     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <books>
     3     <book id="1001">
     4         <name>软件工程</name>
     5         <author>王一一</author>
     6         <price>66</price>
     7     </book>
     8     <book id="1002">
     9         <name>计算机网络</name>
    10         <author>乔二二</author>
    11         <price>89</price>
    12     </book>
    13 </books>
     1 import java.io.IOException;
     2 
     3 import javax.xml.parsers.ParserConfigurationException;
     4 import javax.xml.parsers.SAXParser;
     5 import javax.xml.parsers.SAXParserFactory;
     6 
     7 import org.xml.sax.SAXException;
     8 
     9 public class TestSAXParse {
    10     public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException {
    11     //1)    创建SAXParserFactory的对象
    12         SAXParserFactory spf=SAXParserFactory.newInstance();
    13     //2)    创建SAXParser对象 (解析器)
    14         SAXParser parser=spf.newSAXParser();
    15     //3)    创建一个DefaultHandler的子类
    16         BookDeaultHandler bdh=new BookDeaultHandler();
    17     //4)    调用parse方法
    18         parser.parse("book.xml", bdh);
    19 
    20     }
    21 }
     1 public class BookDeaultHandler extends DefaultHandler {
     2     //重写第一个方法
     3     /**解析xml文档开始时调用*/
     4     @Override
     5     public void startDocument() throws SAXException {
     6         // TODO Auto-generated method stub
     7         super.startDocument();
     8         System.out.println("解析xml文档开始");
     9     }
    10     /*解析xml文档结束时调用*/
    11     @Override
    12     public void endDocument() throws SAXException {
    13         // TODO Auto-generated method stub
    14         super.endDocument();
    15         System.out.println("解析xml文档结束");
    16     }
    17     /**解析xml文档中的节点时调用*/
    18     @Override
    19     public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
    20         // TODO Auto-generated method stub
    21         super.startElement(uri, localName, qName, attributes);
    22         //System.out.println("解析xml文档中的节点时调用");
    23         /**判断,如果是book节点,获取节点的属性和属性值*/
    24         if("book".equals(qName)){
    25             //获取所有的属性
    26             int count=attributes.getLength();//属性的个数
    27             //循环获取每个属性
    28             for(int i=0;i<count;i++){
    29                 String attName=attributes.getQName(i);//属性名称
    30                 String attValue=attributes.getValue(i);//属性值
    31                 System.out.println("属性名称:"+attName+"	属性值为:"+attValue);
    32             }
    33         }else if(!"books".equals(qName)&&!"book".equals(qName)){
    34             System.out.print("节点的名称:"+qName+"	");
    35         }
    36         
    37     }
    38     /**解析xml文档中的节点结束调用*/
    39     @Override
    40     public void endElement(String uri, String localName, String qName) throws SAXException {
    41         // TODO Auto-generated method stub
    42         super.endElement(uri, localName, qName);
    43         //System.out.println("解析xml文档中的节点结束调用");
    44     }
    45     @Override
    46     public void characters(char[] ch, int start, int length) throws SAXException {
    47         // TODO Auto-generated method stub
    48         super.characters(ch, start, length);
    49         String value=new String(ch,start,length);
    50         if(!"".equals(value.trim())){
    51             System.out.println(value);
    52         }
    53         
    54     }
    55 }
  • 相关阅读:
    让vs2013自带的IISExpress支持apk文件下载
    使用h5开发跨平台APP确保数据安全交互---服务器篇
    如何使用iis发布多个ftp,为何ftp 503错误?
    HttpApplication执行顺序
    EXCEL2010分成多个窗口的,解决单个窗口显示多个文档的弊病
    搜索引擎优化(SEO)解决方案
    .net网站快速停机设置app_offline
    SQL SERVER 连接 SQL SERVER 连接服务器
    SQL SERVER 备份还原 局域网 远程
    postgres 临时表
  • 原文地址:https://www.cnblogs.com/qiaoxin11/p/12705548.html
Copyright © 2020-2023  润新知