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 }
  • 相关阅读:
    Security and Cryptography in Python
    Security and Cryptography in Python
    Security and Cryptography in Python
    Security and Cryptography in Python
    Security and Cryptography in Python
    Security and Cryptography in Python
    Security and Cryptography in Python
    微信小程序TodoList
    C语言88案例-找出数列中的最大值和最小值
    C语言88案例-使用指针的指针输出字符串
  • 原文地址:https://www.cnblogs.com/qiaoxin11/p/12705548.html
Copyright © 2011-2022 走看看