JSPCN主页 | JSP空间 | 网站制作 | JSP下载 | JSP论坛 | JSP教程 | 关于JSPCN | 联系我们
JSP虚拟主机,jsp空间,java空间,java虚拟空间,详细请点击进入
做最专业的JSP中文网站 当前位置首页--JAVA技术--XML  
文章搜索:
关键字 标题
  
JSP中文网内容管理系统(JCMS)
JSP虚拟主机
网络笔记本
网摘,图片,笔记收藏
虚拟服务器

JSPCN文章目录分类
JSP配置[219]JSP基础[136]
中文问题[69]上传问题[27]
JAVABEAN[46]数据库[212]
文件操作[126]图片声音[17]
JSP其他[57]时间相关[16]
JAVAMAIL[72]STRUTS[144]
开发工具[28]教程系列[157]
JSP实例[89]
JAVA基础[421]APPLET[78]
JAVA网络[179]Applica[115]
Servlet[98]XML[163]
J2ME[257]J2EE[374]
考试相关[63]JAVA线程[90]
EJB[261]Swing[26]
Java API[141]声音图片[28]
异常处理[33]JAVA实例[290]
JAVA类[139]SUN[89]
Hibernate[6]JMX[8]
Spring[34]
本版推荐文章 
本版热点文章 
相关文章链接 
 
[JAVA100例]069、使用SAX解析XML
作者:     文章来源:
访问次数:275次     加入时间:2007年03月02日

ReadXmlDemo.java


import java.io.*;
import javax.xml.parsers.*;
import org.xml.sax.*;
import org.xml.sax.helpers.*;


public class ReadXmlDemo extends DefaultHandler {


    public static void main(String[] arguments) {
        if (arguments.length > 0){
     ReadXmlDemo read = new ReadXmlDemo(arguments[0]);
 } else {
     System.out.println("Usage: java ReadXmlDemo filename");
 }
    }


    ReadXmlDemo(String xmlFile) {
        File input = new File(xmlFile);
 SAXParserFactory factory = SAXParserFactory.newInstance();
 factory.setValidating(true);
 try {
     SAXParser sax = factory.newSAXParser();
     sax.parse(input, new XmlHandler() );
 } catch (ParserConfigurationException pce) {
     System.out.println("Could not create that parser.");
     System.out.println(pce.getMessage());
 } catch (SAXException saxe) {
     System.out.println("Problem with the SAX parser.");
     System.out.println(saxe.getMessage());
 } catch (IOException ioe) {
     System.out.println("Error reading file.");
     System.out.println(ioe.getMessage());
 }
    }
}


class XmlHandler extends DefaultHandler {
    static int READING_NAME = 1;
    static int READING_SEX = 2;
    static int READING_BIRTH = 3;
    static int READING_NOTHING = 0;
    int currentActivity = READING_NOTHING;
    ReadXml xml = new ReadXml();


    XmlHandler() {
        super();
    }


    public void startElement(String uri, String localName, String qName, Attributes attributes) {
   
        if (qName.equals("title"))
            currentActivity = READING_NAME;
 else if (qName.equals("file"))
     currentActivity = READING_SEX;
 //else if (qName.equals("Birth"))
     //currentActivity = READING_BIRTH;
    }


    public void characters(char[] ch, int start, int length) {
        String value = new String(ch, start, length);
 if (currentActivity == READING_NAME)
     xml.name = value;
 if (currentActivity == READING_SEX)
     xml.sex = value;
 //if (currentActivity == READING_BIRTH)
     //xml.birth = value;
    }


    public void endElement(String uri, String localName, String qName) {
        if (qName.equals("page")) {
     System.out.println(" Name: "+xml.name);
     System.out.println("Sex: "+xml.sex);
     //System.out.println("Birth: "+xml.birth);
     xml = new ReadXml();
 }
    }
}


class ReadXml {
    String name;
    String sex;
    String birth;
}


 


 


SaxParsePage.java


import javax.xml.parsers.*;
import org.xml.sax.*;
import org.xml.sax.helpers.*;
import java.io.*;
/**
 * <p>Title: 使用SAX解析XML</p>
 * <p>Description: 使用SAX接口解析book.xml文件</p>
 * <p>Copyright: Copyright (c) 2003</p>
 * <p>Filename: SaxParsePage.java</p>
 * @version 1.0
 */
public class SaxParsePage extends DefaultHandler {
/**
 *<br>方法说明:主方法,声明解析工厂和加载XML文件
 *<br>输入参数:
 *<br>返回类型:
 */
  public static void main(String[] argv) {
    try {
      //建立SAX解析工厂
      SAXParserFactory spfactory = SAXParserFactory.newInstance();
      //生成SAX解析对象
      SAXParser parser = spfactory.newSAXParser();
      //指定XML文件,进行XML解析
      parser.parse(new File("book.xml"), new SaxParsePage());
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
/**
 *<br>方法说明:文件打开时调用
 *<br>输入参数:
 *<br>返回类型:
 */
  public void startDocument() {
    System.out.println("***开始解析***");
  }
/**
 *<br>方法说明:当遇到开始标记时调用
 *<br>输入参数:
 *<br>返回类型:
 */
  public void startElement(String uri,
                           String localName,
                           String qName,
                           Attributes attributes) throws SAXException {


    System.out.println("节点开始:" + qName);
    for(int i=0;i<attributes.getLength();i++){
     System.out.println("节点属性名称:" + attributes.getQName(i));
     System.out.println("节点属性值:"+attributes.getValue(i));
    }
  }
/**
 *<br>方法说明:当分析器遇到无法识别为标记或者指令类型字符时调用
 *<br>输入参数:
 *<br>返回类型:
 */
  public void characters(char[] ch,
                         int offset,
                         int length) throws SAXException{


    System.out.println("节点数据:" + new String(ch, offset, length));
  }
/**
 *<br>方法说明:当遇到节点结束时调用
 *<br>输入参数:
 *<br>返回类型:
 */
  public void endElement(String uri,
                         String localName,
                         String qName) {


    System.out.println("节点结束:" + qName);
  }
/**
 *<br>方法说明:当到文档的末尾调用
 *<br>输入参数:
 *<br>返回类型:
 */
  public void endDocument() {
    System.out.println("****文件解析完毕****");
  }
}

 
JSP虚拟主机 | JSP空间 | JSP主机 | JSP双线虚拟主机 | JAVA空间 | JAVA虚拟主机 | 虚拟服务器 | JSP 虚拟服务器 | VPS
Virtual Private Server | JAVA虚拟服务器 | VM服务器 | VHOST | 虚拟操作系统 | JSP论坛 | JAVA论坛 | JSP站点论坛
Copyright © 2002-2005 JSPCN.net. All rights reserved.
JSP中文网    备案序号:蜀ICP备05001583号
成都恒海科技发展有限公司    成都市一环路南二段6号新瑞楼三楼8号