zoukankan      html  css  js  c++  java
  • Java Sax解析

    一.   Java Sax解析是按照xml文件的顺序一步一步的来解析,在解析xml文件之前,我们要先了解xml文件的节点的种类,一种是ElementNode,一种是TextNode。如下面的这段book.xml

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <bookStore>
     3     <book id="1">
     4         <name>thinking in java</name>
     5         <price>88</price>
     6         <author>Bruce Eckel</author>
     7     </book>
     8 
     9     <book id="2">
    10         <name>java编程思想</name>
    11         <price>98</price>
    12         <author>陈昊鹏  译</author>
    13     </book>
    14 </bookStore>
    <bookStore>是ElementNode,thinking in java 内容属于TextNode。

    首先Sax解析器加载xml文件,sax解析是按照读取文件的顺序进行解析,当读入文件时,会调用startDocument()方法。读入<bookStore>时候,因为它是一个Element节点,调用startElement(String uri, String localName, String qName, Attributes attributes)方法,然后读入
    <bookStore>和<book>节点之间的内容,会调用characters(char[] ch, int start, int length),这个会解析成" ",然后解析<book>节点,调用endElement(String uri,String localName,String qName)其中qName是节点的名称。然后解析book节点的内容,调用characters方法接着调用endElement()方法,一直到文档结束。
     1 import java.io.File;
     2 import javax.xml.parsers.SAXParser;
     3 import javax.xml.parsers.SAXParserFactory;
     4 import org.xml.sax.Attributes;
     5 import org.xml.sax.SAXException;
     6 import org.xml.sax.helpers.DefaultHandler;
     7 
     8 public class SaxParseTest
     9 {
    10   public static void main(String[] args) throws Exception
    11   {
    12     saxParseXml("src/book.xml");
    13   }
    14   
    15   static void saxParseXml(String fileName) throws Exception{
    16     SAXParserFactory factory = SAXParserFactory.newInstance();
    17     SAXParser saxParser = factory.newSAXParser();
    18     saxParser.parse(new File(fileName), new mySaxHanlder());
    19   }
    20   
    21 }
    22 
    23 class mySaxHanlder extends DefaultHandler{
    24   @Override
    25   public void startElement(String uri,String localName,String qName, Attributes attributes) throws SAXException
    26   {
    27     System.out.print("<"+qName+">");
    28   }
    29 
    30   @Override
    31   public void endElement(String uri,String localName,String qName) throws SAXException
    32   {
    33     System.out.print("</"+qName+">");
    34   }
    35 
    36   @Override
    37   public void characters(char[] ch, int start, int length) throws SAXException
    38   {
    39     System.out.print(new String(ch,start,length));
    40   }
    41 }

    代码只是将加载的xml文件内容输出到控制台。注意:不要将节点之间的空白忘记,它会将空白当成文本节点(TextNode)进行解析.

  • 相关阅读:
    简单的JS控制button颜色随点击更改
    以 “月” 为单位的可以翻页的效果 显示为 2016年01月
    荷兰国旗 Flag of the Kingdom of the Netherlands
    最大连续子数组以及拓展
    Something Wrong or Something Right
    转载文章----十步完全理解SQL
    数据库关系代数练习题
    SQL server 2014安装以及解决连接数据库失败问题
    回文判断
    字符串的包含
  • 原文地址:https://www.cnblogs.com/chenxiaocai/p/5253429.html
Copyright © 2011-2022 走看看