Shammer's Philosophy

My private adversaria

整形式のXML文書を解析するJavaサンプル

XMLの解析には、大きく分けて

  1. 整形式(well-fromed)の解析
  2. 妥当性(valid)の解析

の2つがある。

整形式とは、タグの終了順序が正しいとか、きちんとタグが閉じられているXMLのこと。
つまり、XMLの文法チェックのようなもの。終了タグがないとエラーとなる。

一方、妥当なXMLとは、そのXMLに指定されているDTDXML Schemaの定義を満たすXMLのこと。
DTDスキーマで要求されている要素が抜けていたり、順番が異なるとエラーになる。

今後、Webサービスとかが今以上に普及してくると、この辺の基礎がわかっていないとついていけなくなるだろうな・・・
XML Schemaはよくわかっていないが、少しずつ勉強していかなければ!

まず、小手調べ。整形式のXMLを解析するJavaサンプル。
以下のXMLを解析する。

<?xml version="1.0" encoding="UTF-8"?>
<sample>
  <elementA>
    <name>ElementA_Name</name>
  </elementA>
  <elementB someAttr="B">
    <someTag>Value</someTag>
  </elementB>
</sample>

上記XMLは、すべてのタグがきちんと閉じられている整形式なXML
このXML構文解析するJavaプログラムを書いてみる。

import org.w3c.dom.Document;
import org.apache.xerces.parsers.DOMParser;
import org.xml.sax.SAXException;
import java.io.IOException;

public class MySimpleParse {
    public static void main(String[]args){
	try {
	    DOMParser parser = new DOMParser();
	    parser.parse("well-formed-sample.xml");
	    Document doc = parser.getDocument();
	    System.out.println("well-formed-sample.xml has no problem.");
	}
	catch( SAXException e ){
	    System.err.println("Parser error found: " + e.getMessage());
	    System.exit(1);
	}
	catch( IOException e ){
	    System.err.println("IO error found: " + e.getMessage());
	    System.exit(1);
	}
    }
}

下記のように実行する。

java SimpleParse

特に問題なければ、コンソール画面には「well-formed-sample.xml has no problem.」と出力される。
上述のXMLを適当に書き換えて、閉じるタグを消してみたりすれば何らかのエラーになるはず。