当前位置:七道奇文章资讯编程技术Java编程
日期:2011-03-22 16:14:00  来源:本站整理

[JAVA100例]069、操纵SAX解析XML[Java编程]

赞助商链接



  本文“[JAVA100例]069、操纵SAX解析XML[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

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("\nName: "+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("****文件解析完毕****");
 }
}


  以上是“[JAVA100例]069、操纵SAX解析XML[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • 利用Javascript实现网页水印(非图片水印)
  • Java开辟环境的搭建
  • Ubuntu java安装与配置
  • 办理Ubuntu 10.04 Firefox3.6 Java浏览器插件不工作的问
  • Ubuntu重装后Java环境的设置
  • Sun Java进入Ubuntu 10.10软件中央
  • Ubuntu 10.10配置Java开辟环境
  • 在Ubuntu 10.10中配置Java环境变量的办法
  • Ubuntu下Java环境的搭建
  • Ubuntu 10.04 下安装 Java, JRE
  • Ubuntu 10.04下的搭建SUN JAVA开辟环境
  • Ubuntu 12.04安装java7
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .