JAVA開発メモ
XPP3 のバックアップ(No.1)
 

[トップ|一覧|単語検索|最終更新|バックアップ|ヘルプ]


概要

 XPP3はXMLプルパーサAPIを実装した軽量、高速を特徴とするオープンソースです。
 XMLプルパーサAPIとはDOM/SAX APIとは異なるXMLパーサAPIですが、処理の実行はSAX APIに似ています。大きな違いは、SAX APIが自動的にXMLを読み込み、タグやテキストをイベントとしてプログラムに通知していくのに対し、XMLプルパーサAPIはプログラムからイベントの問い合わせがあるごとにXMLを読み込むといったプログラム主導のモデルとなっています。

情報源

サンプル

 import java.io.FileInputStream;
 import java.io.IOException;
 import java.io.StringReader;
 
 import org.xmlpull.v1.XmlPullParser;
 import org.xmlpull.v1.XmlPullParserException;
 import org.xmlpull.v1.XmlPullParserFactory;
 
 public class SimpleXmlPullApp {
 
     public static void main(String args[]) throws XmlPullParserException, IOException {
         // XmlPullParserFactoryの生成
         XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
         // 名前空間認識の設定
         factory.setNamespaceAware(true);
         // XmlPullParserの生成
         XmlPullParser xpp = factory.newPullParser();
 
         // パース対象のXMLを設定する
         if (args != null && args.length > 0) {
             // 引数にファイルの指定がある場合はファイルを設定
             xpp.setInput(new FileInputStream(args[0]), "UTF-8");
         } else {
             // 引数にファイルの指定がない場合はサンプルタグを設定
             xpp.setInput(new StringReader("<foo att='1'>Hello World!</foo>"));
         }
 
         int eventType = xpp.getEventType();
         // ドキュメントの終了まで繰り返し
         while (eventType != XmlPullParser.END_DOCUMENT) {
             // イベントタイプによって処理を振り分ける
             if (eventType == XmlPullParser.START_DOCUMENT) {
                 System.out.println("Start document");
             } else if (eventType == XmlPullParser.START_TAG) {
                 // 開始タグの場合はタグの名前を表示
                 System.out.println("Start tag:" + xpp.getName());
                 for (int i = 0; i < xpp.getAttributeCount(); i++) {
                     // タグに要素がある場合は要素の名前と値を表示
                     System.out.print(" Attribute:" + xpp.getAttributeName(i));
                     System.out.print("=" + xpp.getAttributeValue(i));
                     System.out.println("(Tyep:" + xpp.getAttributeType(i) + ")");
                 }
             } else if (eventType == XmlPullParser.END_TAG) {
                 // 終了タグの場合はタグの名前を表示
                 System.out.println("End tag:" + xpp.getName());
             } else if (eventType == XmlPullParser.TEXT) {
                 System.out.println("Text:" + xpp.getText());
             }
             // 次のイベントに移動
             eventType = xpp.next();
         }
         System.out.println("End document");
     }
 }

引数なしでの実行結果

 Start document
 Start tag:foo
  Attribute:att=1(Tyep:CDATA)
 Text:Hello World!
 End tag:foo
 End document

トップ 一覧 検索 最終更新 バックアップ   ヘルプ   最終更新のRSS

Modified by MT22(Moriwaki Takashi)

"PukiWiki" 1.3.7 Copyright © 2001,2002,2003 PukiWiki Developers Team. License is GNU/GPL.
Based on "PukiWiki" 1.3 by sng
Powered by PHP 5.3.29

HTML convert time to 0.006 sec.