整形式のXML文書を解析するJavaサンプル
XMLの解析には、大きく分けて
- 整形式(well-fromed)の解析
- 妥当性(valid)の解析
の2つがある。
整形式とは、タグの終了順序が正しいとか、きちんとタグが閉じられているXMLのこと。
つまり、XMLの文法チェックのようなもの。終了タグがないとエラーとなる。
一方、妥当なXMLとは、そのXMLに指定されているDTDやXML 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を適当に書き換えて、閉じるタグを消してみたりすれば何らかのエラーになるはず。