java dtd xml_在java程序中用DTD来验证xml格式不起作用是为什么?请教高手

SAXBuilder builder=new SAXBuilder();

builder.setEntityResolver(new YourDTDResolver());

builder.setValidation(true);

YourDTDResolver implements EntityResolver,实现接口定义的

public abstract InputSource resolveEntity (String publicId,String systemId)throws SAXException, IOException;

方法,在其中添加可以从本地加载dtd的方法,如:

public InputSource resolveEntity(String publicId, String systemId) {

if (systemId != null && systemId.startsWith(URL)) {

logger.debug("trying to locate " + systemId + " in classpath under "+CONFIG_PATH);

// Search for DTD

String path = CONFIG_PATH + systemId.substring(URL.length());

InputStream dtdStream = resourceLoader == null ? getClass()

.getResourceAsStream(path) : resourceLoader

.getResourceAsStream(path);

if (dtdStream == null) {

logger.debug(systemId + " not found in classpath");

return null;

} else {

logger.debug("found " + systemId + " in classpath");

InputSource source = new InputSource(dtdStream);

source.setPublicId(publicId);

source.setSystemId(systemId);

return source;

}

} else {

// use the default behaviour

return null;

}

}

我这样讲你明白吗?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值