java - 如何将本地DTD文件的验证应用于java中的xml文件?
Posted
技术标签:
【中文标题】java - 如何将本地DTD文件的验证应用于java中的xml文件?【英文标题】:How to apply validation of local DTD file to xml file in java? 【发布时间】:2011-12-26 20:25:24 【问题描述】:我需要解析一堆传入的 XML 文档,但它不包含 DTD 声明。目前我正在使用 SAX Parser 解析 xml 文档,但没有 DTD 验证。现在我想应用 DTD 验证。 DTD 是我自己创建的。如何使用自己创建的 DTD(SAX 解析器)验证 XML 文件?我找到了一些使用 Transformer 的教程,但都是针对 DOM Parser 的。
如何使用 SAX Parser 解析 XML 文件并应用 DTD 验证。 任何帮助....
【问题讨论】:
【参考方案1】:以下是我认为可以帮助您做您想做的事情的示例:
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;
【讨论】:
parserFactory.setValidating(true);行在 android 中给出 Parserconfigurationexception 并警告不支持验证的实现。它适用于java,但不适用于android。有没有其他方法可以在 android 中进行 dtd 验证? @Mdroid,对不起,我可能错过了“android”标签。问题本身并没有说明它与android平台有关。你解决问题了吗? 抱歉,我没有提到“Android 平台”。目前我没有更多的解决方法。以上是关于java - 如何将本地DTD文件的验证应用于java中的xml文件?的主要内容,如果未能解决你的问题,请参考以下文章
JavaLearn#(26)MyBatis基础:认识框架MyBatis环境搭建基本CRUD配置文件日志管理别名属性文件ThreadLocal保存sqlSession本地DTD模板
JavaLearn#(26)MyBatis基础:认识框架MyBatis环境搭建基本CRUD配置文件日志管理别名属性文件ThreadLocal保存sqlSession本地DTD模板