2007年06月17日(日)更新 |
■XMLデータが正しくない場合
たけち: これまでは、読み込んだXMLデータが正しいものとして考えてきたよね。 さらら: えぇ、そうだわね。もし違っていたらどうしていいか困っちゃうわ。 たけち: 今回は、読み込んだXMLデータが正しくない場合はどうなるのかを見ておこうね。XMLデータが正しくない場合には、XMLファイルのパースのときに、SAXExceptionという例外が発生するんだ。 さらら: えっ、・・・・・? たけち: 簡単にXMLファイルのパースのときの、SAXException例外が発生したときの処理を示しておこうね。 さらら: うん。 |
XMLファイルのパース時にSAXExceptionが発生
■正しくないサンプルXMLデータ
たけち: じゃ、今回は、正しくないサンプルXMLデータとして次のsample7.xmlファイルを使うね。 |
正しくないサンプルXMLデータ sample7.xml |
---|
<?xml version="1.0" encoding="UTF-8" ?> |
さらら: 最初のchildの終了タグが無いのね。 |
■DOMサンプルプログラム(7) SAXExceptionの処理
たけち: じゃ、次に今回のDOMサンプルプログラム(6)のソースコードを載せておくね。 さらら: はい。 |
行 | DOMサンプルプログラム(7) DOMSample7.java |
---|---|
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
package dom.study.sample_1; import java.io.IOException; import org.apache.xerces.parsers.DOMParser; import org.w3c.dom.Document; import org.w3c.dom.NamedNodeMap; import org.w3c.dom.Node; import org.xml.sax.SAXException; public class DOMSample7 { public static void main(String[] args) { String file = args[0]; try { DOMParser parser = new DOMParser(); // パーサの生成 parser.parse(file); // XMLファイルのパース Document document = parser.getDocument(); // DOCUMENTノードの取得 if (document.hasChildNodes()) { // 子ノードがある場合 Node node = document.getFirstChild(); // DOCUMENTノードの最初の子ノード NamedNodeMap attrs = node.getAttributes(); // 要素ノードの属性 if (attrs!=null) { for (int index=0;index<attrs.getLength();index++) { Node attr = attrs.item(index); // 属性ノード System.out.print("属性名 = " + attr.getNodeName()); // 属性の名前 System.out.println(", 値 = " + attr.getNodeValue()); // 属性の値 } } } else { System.out.println("DOCUMENTノードに子ノードがありません。"); } } catch (SAXException e) { System.out.println("***** 読み込んだXMLデータが正しくありません。"); e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } } |
さらら: えっ〜と。。。41行目から44行目までで、SAXExceptionが発生したときの処理をしているのね。 たけち: そう、そうだね。だいたいわかるよね。 さらら: う〜ん、まぁまぁかな。。。(^ ^; |
■DOMSample7の実行例(sample7.xmlの読み込み)
たけち: じゃ、sample7.xmlファイルを指定して、DOMSample7プログラムを実行させてみよう。実行結果は次のようになるよ。 |
さらら: 「***** 読み込んだXMLデータが正しくありません。」が表示されているわ。 たけち: それと、 さらら: あっ、そうね。これでどこが悪いかが分かるわね。 たけち: じゃ、SAXExceptionについての補足はこれでおしまい。おつかれさま。 さらら: あっ、は〜い。ありがとね。 → 次回は、XMLデータを作成する(1)です。....... (^ ^; |