デフォルトの Woodstox EventReader を使用して XML ファイルを読み込んでいます。
XMLInputFactory.newInstance().createXMLEventReader(new FileInputStream(fileName));
入力ファイルのテキスト コンテンツに Unicode NULL 文字が含まれている場合、次の例外/スタックトレースが発生します。
WstxUnexpectedCharException.<init>(String, Location, char) line: 17
ValidatingStreamReader(StreamScanner).constructNullCharException() line: 604
ValidatingStreamReader(StreamScanner).throwInvalidSpace(int, boolean) line: 633
ValidatingStreamReader(BasicStreamReader).readTextSecondary(int, boolean) line: 4624
ValidatingStreamReader(BasicStreamReader).finishToken(boolean) line: 3661
ValidatingStreamReader(BasicStreamReader).next() line: 1063
WstxEventReader(Stax2EventReaderImpl).nextEvent() line: 255
テキストコンテンツの検証を避けたいです。XMLInputFactory で IS_VALIDATING を設定しても問題は解決しません。
ソース コードを調べたところ、BasicStreamReader の next() は "mValidateText" 変数を参照して、検証するかどうかを判断しているようです。
ソースから:
/**
* Flag that indicates that textual content (CDATA, CHARACTERS) is to
* be validated within current element's scope. Enabled if one of
* validators returns {@link XMLValidator#CONTENT_ALLOW_VALIDATABLE_TEXT},
* and will prevent lazy parsing of text.
*/
protected boolean mValidateText = false;
InputFactory または EventReader でこの値を変更/設定する方法がわかりませんか? おそらく、ValidatingStreamReader ではなく TypedStreamReader を使用するように InputFactory に指示する必要がありますか?