3. XML文書を読む22005.12.20 株式会社四次元データ 宮澤了祐
SAX 3章 XML文書を読む2
3.1. エラー通知を受け取るDefaultHandlerではエラー通知を受け取る際に何もしていません。 もしエラーが発生した際に好きな処理を行いたい場合、以下の関数をオーバーロードする必要があります。
これらのエラーはW3CのXML1.0の勧告によって定められています。 以下は致命的なエラーが発生した場合のサンプルです。 public void fatalError(SAXParserException e) throws SAXParserException{
System.out.println(
e.getLineNumber() + "行目に致命的なエラーが発生しました。"
+ "処理を中断します。");
}
SAXParserExceptionのgetLineNumber()メソッドで、エラーが発生したXMLが何行目かを知ることが出来ます。 3.2. DTDを利用した妥当性のチェックSAXParserFactoryのsetValidation(boolean validating)メソッドにより、妥当性のチェックをする設定ができます。 ディフォルトはFalseになっています。 ...
SAXParserFactory sparser = SAXParserFactory.newInstance();
sparser.setValidating(true);
SAXParser parser = sparser.newSAXParser();
...
parser.parse(new File("sample.xml"), new SaxSample());
public class SaxSample extends DefaultHandler{
...
public void error(SAXParseException e){
System.out.println(e.getLineNumber()+"行目にエラーがあります。"+e.getMessage());
}
...
}
これにより、もしDTDにそぐわないXMLであれば、エラー通知関数であるvoid error(SAXParseException e)が呼ばれます。 以下はエラーの例です。 3行目にエラーがあります。Element type "root" must be declared. |
![]()
![]()
|