Commons Configuration DTD validate
Commons Configuration DTD バリデーション
- DocumentBuilderを生成する
- EntityResolverを作成してDTDファイルを指定(下記は無名クラスによる実装)
- setValidating(true)でvalidate実施を宣言
- load(aFileName)で読み込み処理実施
結果バリデートが可能になるのですが、DTDなので必要十分なチェックとはいかないようです。
try {
Configuration xml = new XMLConfiguration();
DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
builder.setEntityResolver(new EntityResolver() {
public InputSource resolveEntity(String publicId, String systemId) throws SAXException, IOException {
if (systemId.endsWith("DTDファイル名")) {
Class clazz = getClass();
InputStream in = clazz.getResourceAsStream("/DTD ファイル名(FQDN) ");
if (in == null) {
logger.error(SystemLog.LEVEL_ERROR, clazz,
"Could not find [dtd]. ClassLoader is [" + clazz.getClassLoader() + "]");
return null;
} else {
return new InputSource(in);
}
}
return null;
}
});
xml.setDocumentBuilder(builder);
// Reload設定
xml.setReloadingStrategy(new FileChangedReloadingStrategy());
xml.setValidating(true);
xml.load(aFileName);
} catch (ConfigurationException e) {
logger.error("例外発生");
}
コメント