2011-11-11 36 views
5

入ってくるXML文書を解析する必要がありますが、DTD宣言は含まれていません。現在、私はXML文書をSAXパーサーを使用して解析していますが、DTD検証はしていません。今、私はDTD検証を適用したいと思います。 DTDは自分で作成します。自分で作成したDTD(SAXパーサー)を使用してXMLファイルを検証するにはどうすればよいですか?私はTransformerを使用していくつかのチュートリアルを見つけましたが、すべてDOM Parser用です。JavaのxmlファイルにローカルDTDファイルの検証を適用する方法は?

SAXパーサーを使用してXMLファイルを解析し、DTD検証を適用する方法。 すべてのヘルプ....

答えて

2

以下は、私はあなたがやりたい助けることができると考えているサンプルです:

private void loadXML(Reader reader) throws ParserConfigurationException, SAXException { 
    SAXParserFactory parserFactory = SAXParserFactory.newInstance(); 
    parserFactory.setValidating(true); 
    SAXParser parser = parserFactory.newSAXParser(); 
    parser.parse(new InputSource(reader), new MyHandler()); 
} 

private static class MyHandler 
     extends DefaultHandler { 

    private static final String PREFS_DTD_URI = "http://www.example.com/dtd/document.dtd"; 

    public InputSource resolveEntity(String publicId, String systemId) throws SAXException { 
     if (systemId.equals(PREFS_DTD_URI)) { 
      InputSource is = new InputSource(new StringReader(PREFS_DTD)); // PREFS_DTD is a string containing actual DTD, any other Reader could be here 
      is.setSystemId(PREFS_DTD_URI); 
      return is; 
     } 
     // else use the default behaviour 
     return null; 
    } 
} 
+0

parserFactory.setValidating(真の); AndroidでParser ConfigurationExceptionを与え、検証の実装がサポートされていないことを警告します。それはJavaでは動作しますが、Androidでは動作しません。アンドロイドでdtd検証を行う他の方法はありますか? –

+0

@Mdroid、申し訳ありませんが、おそらく私は "アンドロイド"タグを見逃しました。質問自体はアンドロイドのプラットフォームに関するものではありません。あなたは問題を解決しましたか? –

+0

申し訳ありませんが、問題の「Androidプラットフォーム」については言及していません。そして、私はこれでこれ以上のことはできません。 –

関連する問題