JavaでHello World
Google
  HOME  |  基礎  |  掲示板  |  ツール |  書籍  |  デザインパターン  |  リンク  |  フィードバック
JavaでHello World > XML(SAX)編  
メニュー
Home
情報交換掲示板
ツールの部屋
Java関連の書籍
アプリケーション編
Swing編
Swing(イベント)編
Swing(Look&Feel)編
アプレット編
iアプリ編
サーブレット編
サーブレット(Linux)編
サーブレット(web.xml)編
サーブレット(セッション)編
サーブレット(クッキー)編
サーブレット(フィルタ)編
JSP編
JSP(ディレクティブ)編
JSP(アクション)編
JSP(スクリプト)編
JSP(オブジェクト)編
JSP(カスタムタグ)編
JSP(データベース)編
Apache + Tomcat編
Struts編
JDBC編
JDBC(データソース)編
JDBC(MySQL)編
JDBC(PostgreSQL)編
JDBC(トランザクション)編
JavaMail(SMTP)編
JavaMail(POP)編
JNI編
RMI編
RMI(アプレット)編
CORBA編
JNDI編
EJB編
EJB(Entity Bean)編
JMS(PTP)編
JMS(Pub/Sub)編
XML(SAX)編
XML(DOM)編
XSLT編
SOAP編
国際化編
国際化(タイムゾーン)編
国際化(通貨)編
リフレクション編
コレクション編
コレクション(Set)編
コレクション(List)編
コレクション(Map)編
スレッド編
正規表現編
アサーション編
ログ機能編
サウンド編
ファイル入出力編
URL編
ソケット編
データグラム編
HTTP
FTP編
jar編
javadoc編
Ant編
外部コマンド編
プロパティファイル編
システムプロパティ編
Eclipse編
  2002/02/03  田中宏和
Last Update 2002/12/08
XML(SAX)編
◆SAXとは?
SAXSimple API for XMLの略です。DOM(Document Object Model)と並んでXMLを解析するために使用する標準APIです。SAXはXML文書を先頭から読んでいきそこで発生したイベントをアプリケーションでとらえて処理するAPIです。DOMに比べて、メモリ消費量が少ない、解析速度が速いなどのメリットがありますが、ノードの追加、削除など、XML文書を更新する機能はありません。
◆発生するイベントとその場所
XML文書 イベント
  ドキュメントの開始時
→ startDocument()メソッド
<?xml version="1.0" encoding="Shift_JIS" ?>  
<message> エレメントの開始タグ読み込み時
→ startElement()メソッド
Hello World テキストデータ読み込時
→ characters()メソッド
</message> エレメントの終了タグ読み込み時
→ endElement()メソッド
  ドキュメントの終了時
→ endDocument()メソッド
 
◆ここでの環境
OS Windows 2000
J2SE SDK 1.3.1_01
◆Javaの実行環境の構築
アプリケーション編を参考にJ2SE SDKをインストールしてJavaの実行環境を構築します。
◆SAXのAPIのライブラリをCLASSPATHに追加(J2SE SDK 1.3以下の場合)
J2SE SDKのバージョンが1.3以下の場合、SAXのAPIを使用可能にしなければなりません。1.4以上の場合はJ2SE SDKにSAXのAPIが含まれているので追加する必要はありません。ここでは、JAXP(Java API for XML Processing)を使用します。JAXPはJava XML Packに入っています。
Java XML Packのダウンロード → Java XML Pack
ダウンロードしましたら解凍したフォルダに入っているjaxp-api.jar、dom.jar、sax.jar、xercesImpl.jarをCLASSPATHに追加してください。追加方法はアプリケーション編を参考にしてください。
◆XMLファイルの用意
テキストエディタで以下の内容のXMLファイルを作成してください。
helloworld.xml(ここからダウンロード)
<?xml version="1.0" encoding="Shift_JIS" ?>

<message>Hello World</message>

◆Javaソースコードの作成
HelloWorldSax.java(ここからダウンロード)
import javax.xml.parsers.*;
import org.xml.sax.*;
import org.xml.sax.helpers.*;
import java.io.*;

public class HelloWorldSax extends DefaultHandler {
  public static void main(String[] argv) {
    try {
      // SAXパーサーファクトリを生成
      SAXParserFactory spfactory = SAXParserFactory.newInstance();
      // SAXパーサーを生成
      SAXParser parser = spfactory.newSAXParser();
      // XMLファイルを指定されたデフォルトハンドラーで処理します
      parser.parse(new File("helloworld.xml"), new HelloWorldSax());
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
  /**
   * ドキュメント開始時
   */
  public void startDocument() {
    System.out.println("ドキュメント開始");
  }
  /**
   * 要素の開始タグ読み込み時
   */
  public void startElement(String uri,
                           String localName,
                           String qName,
                           Attributes attributes) {

    System.out.println("要素開始:" + qName);
  }
  /**
   * テキストデータ読み込み時
   */
  public void characters(char[] ch,
                         int offset,
                         int length) {

    System.out.println("テキストデータ:" + new String(ch, offset, length));
  }
  /**
   * 要素の終了タグ読み込み時
   */
  public void endElement(String uri,
                         String localName,
                         String qName) {

    System.out.println("要素終了:" + qName);
  }
  /**
   * ドキュメント終了時
   */
  public void endDocument() {
    System.out.println("ドキュメント終了");
  }
}
 
 
■メソッドの説明
メソッド 説明
startDocument() ドキュメントの開始時の実行される。
endDocument() ドキュメントの終了時に実行される。
startElement() エレメントの開始タグ読み込み時に実行される。
<Parameters>
uri・・・名前空間のURI
localName・・・前置修飾子を含まないローカル名。名前空間処理が行われない場合は空文字列
qName・・・ 前置修飾子を持つ修飾名。修飾名を使用できない場合は空文字列
attributes・・・指定された属性またはデフォルトの属性
endElement() エレメントの終了タグ読み込み時に実行される。
<Parameters>
uri・・・名前空間のURI
localName・・・前置修飾子を含まないローカル名。名前空間処理が行われない場合は空文字列
qName・・・ 前置修飾子を持つ修飾名。修飾名を使用できない場合は空文字列
characters() テキストデータ読み込み時に実行される。
<Parameters>
ch・・・テキストデータが格納されたchar型の配列
offset・・・配列に格納されているテキストデータのスタート位置
length・・・ 配列に格納されているテキストデータの長さ
 
◆コンパイル
コマンドプロンプト

C:\JavaHello\Sax>javac HelloWorldSax.java

C:\JavaHello\Sax>

◆実行
コマンドプロンプト

C:\JavaHello\Sax>java HelloWorldSax
ドキュメント開始
要素開始:message
テキストデータ:Hello World
要素終了:message
ドキュメント終了

C:\JavaHello\Sax>

おおおお!!表示されましたね!
 
■書籍
Java関連の書籍
XML関連の書籍

 
  ネットで買えば断然お得!お買い物なら楽天市場
ツールの部屋 - Java関連の書籍 - デザインパターン - 情報交換掲示板 - HOME