读书人

dom4j当地校验DTD

发布时间: 2012-06-28 15:20:03 作者: rapoo

dom4j本地校验DTD
如果XML中存在

<!DOCTYPE ejb-jar PUBLIC '-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN' 'http://java.sun.com/dtd/ejb-jar_2_0.dtd'>

这种语句,说明要进行校验。
如果校验则会连接网络,这样做会很慢的。我们可以设置成校验本地的DTD,那么就设置个解释器到SAXReader,代码如下所示:

EntityResolver resolver = new EntityResolver() {    public InputSource resolveEntity(String publicId, String systemId) {        if ( publicId.equals( "-//Acme//DTD Foo 1.2//EN" ) ) {            InputStream in = getClass().getResourceAsStream(                "/com/acme/foo.dtd"            );            return new InputSource( in );        }        return null;    }};SAXReader reader = new SAXReader();reader.setEntityResolver( resolver );Document document = reader.read(new File(fileName));


这样就能实现本地校验了。

读书人网 >软件架构设计

热点推荐