Java プログラムメモ


トップ

SAX で XML 解析

SAX とは Simple API for XML の略で、DOM のように XML の解析をしてから処理をするのでなく、 XML の解析を行いながら処理を行っていきます。 DOM と比べてメモリ消費量が少ないのと解析速度が速いなどの メリットがありますが、XML の更新はできません。

XML を解析する例を書きます。パーサーには xerces-2.6.2 を利用しています。

XML 例

<?xml version="1.0" encoding="UTF-8" ?> <document> <element attribute="attribute">Test</element> </document>

Java 記述例

public class SAXTest { public static void main(String[] args) { try { SAXParserFactory factory = SAXParserFactory.newInstance(); SAXParser parser = factory.newSAXParser(); parser.parse(new File("C:/work/test.xml"), new SAXTestHandler()); } catch (Exception e) { e.printStackTrace(); } } // SAX のハンドラクラス private static class SAXTestHandler extends DefaultHandler { // Document の開始通知を受け取る public void startDocument() { System.out.println("start....."); } // 要素の開始通知を受け取る public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { System.out.println("start element: " + qName); if (qName.equals("element")) { System.out.println("att: " + attributes.getValue("attribute")); } } // 要素を受け取る public void characters(char[] ch, int offset, int length) { if (offset != 0) { System.out .println("element :" + new String(ch, offset, length)); } } // 要素の終了通知を受け取る public void endElement(String uri, String localName, String qName) { System.out.println("end element: " + qName); } // Document の終了通知を受け取る public void endDocument() { System.out.println("end......"); } // default constructor SAXTestHandler() { } }

出力結果

start..... start element: document start element: element att: attribute end element: element end element: document end......


プログラムメモ アフリカ雑貨・珈琲豆・アールブリュット作品 マゴソスクール クラウドファンディング
SEO [PR] 爆速!無料ブログ 無料ホームページ開設 無料ライブ放送