2012-04-21 7 views
4

内部でDTD宣言を含むXMLファイルを読み込む際に問題があります(外部宣言は解決されています)。 SAXメソッド(javax.xml.parsers.SAXParser)を使用しています。 DTD定義の解析がない場合、例えばStartElement-Characters-StartElement-Characters-EndElement-Charactersのようになります。StartまたはEnd要素の直後に呼び出される文字メソッドがあり、それが必要な方法です。 DTDがファイル解析中にスキーマの変更をStartElement-StartElement-StartElement-Characters-EndEement-EndEement-EndEementに変更すると、私はすべての要素の後にCharactersメソッドが必要です。だから私は、構文解析のスキーマの変更を防ぐための方法はありますか?JavaでXMLファイルを解析する際にインラインDTDを無視する方法

マイコード:

SAXParserFactory factory = SAXParserFactory.newInstance(); 
factory.setValidating(false); 

SAXParser parser = factory.newSAXParser(); 
XMLReader reader = parser.getXMLReader(); 

reader.setFeature("http://xml.org/sax/features/validation", false); 
reader.setFeature("http://apache.org/xml/features/nonvalidating/load-dtd-grammar", false); 
reader.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false); 
reader.setFeature("http://xml.org/sax/features/external-general-entities", false); 
reader.setFeature("http://xml.org/sax/features/external-parameter-entities", false); 
reader.setFeature("http://xml.org/sax/features/use-entity-resolver2", false); 
reader.setFeature("http://apache.org/xml/features/validation/unparsed-entity-checking", false); 
reader.setFeature("http://xml.org/sax/features/resolve-dtd-uris", false); 
reader.setFeature("http://apache.org/xml/features/validation/dynamic", false); 
reader.setFeature("http://apache.org/xml/features/validation/schema/augment-psvi", false); 

reader.parse(input); 

私はlink(私のDropboxへのリンク)を解析しようとしているXMLファイルがあります。

答えて

4

characters()コールバックに以前に報告されていたノードがignorableWhitespace()コールバックに報告されている可能性があります。最も簡単な解決法は、からcharacters()に電話することです。

これはスペックを約ignorableWhitespace()を言っているものです。

パーサは要素の内容で 空白の各チャンクを報告するには、このメソッドを使用する必要があります検証(W3C XML 1.0 recommendation, section 2.10を参照してください):非検証パーサでも使用することができます がコンテンツモデルを解析して使用できる場合は、このメソッドを使用します。言い換えれば

DTDがある場合は、あなたが検証していない場合、それはそれはcharacters()コールバックまたは ignorableWhitespace()コールバックを使用した要素のみの 内容モデルに空白を報告するかどうかを、パーサ次第です 。

+0

ありがとうございました。それは完全に動作します。 – JavaXML

関連する問題