SAK 図書館
JAVA Servlet、JSP 基礎編14 - XML 定義取得、digester、XMLReaderFactory
■XML 定義取得 digester で XML に定義したデータ取得をテストしてみた。 使用したパッケージは、 commons-digester-1.3.zip である。 ■jar 配置 次の jar を WEB-INF/lib/ に配置した。 commons-digester.jar この他に少なくとも commons-beanutils.jar の配置が必要であった。 既にいくつかの jar が配置済みであったため、他の依存 jar は確認 していないが、log4j に山ほど DEBUG メッセージを出力することから、 commons-logging なども必須かなと思う。 ■留意点 digester の動作時に DEBUG レベルメッセージが山ほどロギングに出力され 動作スピードが著しく低下する。(^^; 何か抑制方法があるのかもしれないが、忙しくて調べられなかった。 log4j を使用しているなら、log4j.properties の log4j.rootCategory で INFO 以上のみのロギング指定で DEBUG レベルメッセージをパスできる。 詳しくは、 JAVA Servlet、JSP 基礎編13 - ロギング、commons-logging、log4j.properties を参照下さい。 ■XML 定義取得テスト用 Servlet parser 方法に色々あるようである。 crimson 使用パターンと FileInputStream 使用パターンを試してみた。 /* ======================================================================== xmltest1 - crimson 使用パターン ======================================================================== */ import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import org.apache.commons.digester.*; import org.apache.crimson.parser.XMLReaderImpl; import org.xml.sax.XMLReader; import org.xml.sax.helpers.XMLReaderFactory; public class xmltest1 extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { XMLReader xmlReader = null; XmlTestBean xmlitem = null; try { xmlReader = XMLReaderFactory.createXMLReader(XMLReaderImpl.class.getName()); } catch (Exception e) { dspMsg(e.toString(), response); return; } Digester dig = new Digester(xmlReader); dig.addObjectCreate("root", XmlTestBean.class); dig.addBeanPropertySetter("root/data1"); dig.addBeanPropertySetter("root/data2"); try { xmlitem = (XmlTestBean)dig.parse(new File("g:/tmp/test.xml")); } catch (Exception e) { dspMsg(e.toString(), response); return; } dspMsg(xmlitem.getData1() + "<BR>" + xmlitem.getData2(), response); } public void dspMsg(String msg, HttpServletResponse response) throws IOException { response.setContentType("text/html; charset=MS932"); PrintWriter out = response.getWriter(); out.println("<HTML>"); out.println("<HEAD>"); out.println("</HEAD>"); out.println("<BODY>"); out.println("<P>-- xmltest1 実行結果 --</P>"); out.println("<P>" + msg + "</P>"); out.println("</BODY>"); out.println("</HTML>"); } } /* ======================================================================== xmltest2 - FileInputStream 使用パターン ======================================================================== */ import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import javax.xml.parsers.*; import org.apache.commons.digester.*; public class xmltest2 extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { SAXParserFactory factory = null; SAXParser xmlReader = null; XmlTestBean xmlitem = null; try { factory = SAXParserFactory.newInstance(); xmlReader = factory.newSAXParser(); } catch (Exception e) { dspMsg(e.toString(), response); return; } Digester dig = new Digester(xmlReader); dig.addObjectCreate("root", XmlTestBean.class); dig.addBeanPropertySetter("root/data1"); dig.addBeanPropertySetter("root/data2"); try { InputStream fno = new FileInputStream("g:/tmp/test.xml"); xmlitem = (XmlTestBean)dig.parse(fno); } catch (Exception e) { dspMsg(e.toString(), response); return; } dspMsg(xmlitem.getData1() + "<BR>" + xmlitem.getData2(), response); } public void dspMsg(String msg, HttpServletResponse response) throws IOException { response.setContentType("text/html; charset=MS932"); PrintWriter out = response.getWriter(); out.println("<HTML>"); out.println("<HEAD>"); out.println("</HEAD>"); out.println("<BODY>"); out.println("<P>-- xmltest2 実行結果 --</P>"); out.println("<P>" + msg + "</P>"); out.println("</BODY>"); out.println("</HTML>"); } } ■XML 定義取得テスト用 Bean /* ======================================================================== XmlTestBean ======================================================================== */ public class XmlTestBean { private String data1 = ""; private String data2 = ""; public XmlTestBean() { } public void setData1(String str) { data1 = str; } public String getData1() { return data1; } public void setData2(String str) { data2 = str; } public String getData2() { return data2; } } ■XML 定義取得テスト用 xml <?xml version="1.0" encoding="MS932"?> <root> <data1>データ1</data1> <data2>データ2</data2> </root> ■JAVA Servlet、JSP 基礎編資料
■JAVA Servlet、JSP + PostgreSQL 編資料
■JAVA Servlet、JSP + Oracle9i 編資料
■PostgreSQL 編、JAVA Servlet、JSP 編資料
■MySQL 編資料
■SQL 基礎編資料
■SQL 基礎実地編資料
■SQL チューニング編資料
■Oracle PL/SQL 編資料