작동하는 솔루션을 게시하고 있으며 SAX 설명서의 입력 내용을 가져 왔습니다. 필자는 W3 학교의 샘플 DTD와 XML을 같은 (http://www.w3schools.com/xml/xml_dtd.asp)에 사용 했으므로 DOCTYPE은 별도의 파일에 있으므로 DTD에서 한 줄만 제거하면 필요하지 않습니다. 원하시는 샘플인지 확실하지 않아서 도움이되기를 바랍니다!
public static void main(String[] args) {
try {
SAXParserFactory factory = SAXParserFactory.newInstance();
factory.setNamespaceAware(true);
factory.setValidating(true);
XMLReader reader = factory.newSAXParser().getXMLReader();
reader.parse(new InputSource(new FileInputStream("C:\\DevelopmentTools\\3.CODE\\SAX-XML.txt")));
reader.setEntityResolver(new EntityResolver() {
@Override
public InputSource resolveEntity(String publicId, String systemId) throws SAXException, IOException {
// TODO Auto-generated method stub
if (systemId == null) {
systemId = "C:\\DevelopmentTools\\3.CODE\\99.WORKSPACE\\Note.dtd";
}
InputSource result = null;
result = new InputSource(systemId);
return result;
}
});
} catch (ParserConfigurationException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}