[英]How to apply validation of local DTD file to xml file in java?
我需要解析一堆传入的XML文档,但它不包含DTD声明。 目前我正在使用SAX Parser解析xml文档但没有DTD验证。 现在我想应用DTD验证。 DTD由我自己创建。 如何使用自己创建的DTD(SAX解析器)验证XML文件? 我找到了一些使用Transformer的教程,但都是针对DOM Parser的。
如何使用SAX Parser解析XML文件并应用DTD验证。 任何帮助......
以下是我认为可以帮助您做到您想要的样本:
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;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.