原来
SAXReader reader = new SAXReader();
修改后
public class IgnoreDTDEntityResolver implements EntityResolver {
@Override
public InputSource resolveEntity(String publicId, String systemId)
throws SAXException, IOException {
return new InputSource(new ByteArrayInputStream("<?xml version='1.0' encoding='UTF-8'?>".getBytes()));
}
}
SAXReader reader;
public SAXReader getReader(){
if (reader == null){
reader = new SAXReader();
reader.setEntityResolver(new IgnoreDTDEntityResolver());
}
return reader;
}
需要使用 reader 是,调用 getReader , 而不是自己 new 一个,这样既成功的忽略了读取 xml 是的文件头检查
本文介绍了一种在解析XML时忽略DTD实体加载的方法,通过自定义EntityResolver并使用SAXReader进行XML解析,有效避免了外部实体的加载,提高了安全性。
4101

被折叠的 条评论
为什么被折叠?



