Digesterの使い方(覚書)
おぼえがき
strutsのpluginとして、Digesterを使ってXMLファイルから
定数情報を参照したり、そのほか色々応用はあるのですが、、
ルールファイル
<digester-rules> <object-create-rule pattern="Conf" classname="hoge"/> <call-method-rule pattern="Conf/obj" methodname="setProperty" paramtypes="java.lang.String,java.lang.String" paramcount="2" /> <call-param-rule pattern="Conf/obj" paramnumber="0" attrname="key" /> <call-param-rule pattern="Conf/obj" paramnumber="1" attrname="value" /> </digester-rules>
下のような感じで呼び出し
※インターフェースorg.apache.struts.action.PlugInの委譲クラスとして作成
StringTokenizer st = new StringTokenizer(pathnames, ","); try { // ルールファイルのロード URL rulesUrl = this.getClass().getResource("digester-rules.xml"); Digester digester = DigesterLoader.createDigester(rulesUrl); digester.setValidating(false); while (st.hasMoreTokens()) { String rules = st.nextToken().trim(); // パース処理を行う digester.parse(servlet.getServletContext().getRealPath(rules)); } } catch (SAXException ex) { throw new ServletException(ex); }
読み込むファイル(プログラムから定数として参照したり)
<?xml version="1.0"?> <Conf> <obj key="aaa" value="111" /> <obj key="bbb" value="222" /> </Conf>
struts-config.xmlのpluginとして登録する
<plug-in className="HogePlugin"> <set-property property="pathnames" value="/WEB-INF/aaa.xml,/WEB-INF/bbb.xml"/> </plug-in>