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 { //エラーハンドラとエンティティリゾルバの実装を記述 }