jdom解析xml文档,如何略过远程外部dtd下载

stationxp 2003-06-18 08:33:34
<?xml encoding="UTF-8"?>
<!DOCTYPE jasperReport PUBLIC "-//JasperReports//DTD Report Design//EN" "http://jasperreports.sourceforge.net/dtds/jasperreport.dtd">

用java下的dom解析器解析的时候,每次都要下载http://jasperreports.sourceforge.ne...asperreport.dtd
结果连不上,抛出IOException,从而XML文件也无法解析。
我用jdom和xerces两者都试过,没办法略过dtd下载。

有什么办法在这个dtd下载失败的情况下,仍继续解析文档,只不过不做dtd合法验证而已。

...全文
80 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
stoger 2003-06-21
  • 打赏
  • 举报
回复
两个特性都要设,在b9版本上使用org.apache.xerces.parsers.SAXParser通过。
前者是要不要装载,后者是要不要验证,如果后者为true,前者就没有意义了,都会去装载。
builder.setFeature(
"http://apache.org/xml/features/nonvalidating/load-external-dtd", false);
builder.setFeature(
"http://xml.org/sax/features/validation",false);
saucer 2003-06-19
  • 打赏
  • 举报
回复

builder.setEntityResolver(new NoOpEntityResolver());


see
http://www.jdom.org/docs/faq.html#a0350
saucer 2003-06-18
  • 打赏
  • 举报
回复
call

SAXBuilder builder =
new SAXBuilder("org.apache.xerces.parsers.SAXParser", true);
...
builder.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false);

Document doc = builder.build(new FileInputStream(file));
stationxp 2003-06-18
  • 打赏
  • 举报
回复
up
stationxp 2003-06-18
  • 打赏
  • 举报
回复
这个方法已经试过了。
builder.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false);
这句起的作用是不用dtd对xml文档进行验证,但是还要 load dtd文档,在网路不通的情况下,抛出IO异常。

8,906

社区成员

发帖
与我相关
我的任务
社区描述
XML/XSL相关问题讨论专区
社区管理员
  • XML/XSL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧