Hitachi

Cosminexus V11 アプリケーションサーバ Cosminexus XML Processor ユーザーズガイド


3.4.8 高速パース機能を使用するためのコード例

高速パース機能を使用するために,ユーザプログラムに記述するコードの例を次に示します。

import java.io.File;
import java.io.IOException;
import javax.xml.parsers.SAXParserFactory;
import javax.xml.parsers.SAXParser;
import org.xml.sax.EntityResolver;
import org.xml.sax.ErrorHandler;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
import com.cosminexus.jaxp.preparsedxml.PreparsedObjectFactory;
import com.cosminexus.jaxp.preparsedxml.PreparsedObject;
 
public class TestSAXParser{
    public static void main(String[] args){
        try{
            // 事前解析用XML文書から解析結果オブジェクトを生成する
            File xml = new File("learning1.xml");
            MyHandler handler = new MyHandler ();
            PreparsedObjectFactory pof = PreparsedObjectFactory.newInstance();
            pof.setNamespaceAware(true);
            pof.setEntityResolver(handler);
            pof.setErrorHandler(handler);
            PreparsedObject pobj = pof.newPreparsedObject(xml);
 
            // XMLパーサを生成する
            SAXParserFactory spf = SAXParserFactory.newInstance();
            spf.setNamespaceAware(true);
            SAXParser sp = spf.newSAXParser();
 
            // 解析結果オブジェクトをXMLパーサに設定して,解析を実行する
            sp.setProperty("http://cosminexus.com/xml/properties/preparsedobject-load", pobj);
            sp.parse("SampleSAX.xml", handler);
        } catch(IllegalArgumentException iae){
            System.out.println("MSG : " + iae.getMessage());
        }catch(SAXException se){
            System.out.println("MSG : " + se.getMessage());
        }catch(IOException ioe){
            System.out.println("MSG : " + ioe.getMessage());
        }catch(Exception e){
            e.printStackTrace();
        }
    }
}
 
class MyHandler extends DefaultHandler {
  //エラーハンドラとエンティティリゾルバの実装を記述
}