zoukankan      html  css  js  c++  java
  • 三、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 }
  • 相关阅读:
    Windows 和 Linux下使用socket下载网页页面内容(可设置接收/发送超时)的代码(用socket解释http,不错)
    HTTP协议 HttpWebRequest和 Socket的一点总结
    ASP.NET MVC基础学习
    利用HttpWebRequest和HttpWebResponse获取Cookie并实现模拟登录
    C#中Hashtable容器的了解与使用
    lib 和 dll 的区别、生成以及使用详解
    将SQL获取的信息传递到Email中
    关于ref与out的区别
    C#中指针使用总结
    一个打包文件导入器
  • 原文地址:https://www.cnblogs.com/qiaoxin11/p/12705548.html
Copyright © 2011-2022 走看看