首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法解析JavaHelp的toc.xml

无法解析JavaHelp的toc.xml
EN

Stack Overflow用户
提问于 2010-09-14 05:17:47
回答 2查看 576关注 0票数 2

我为JavaHelp的toc.xml文件编写了一个XML解析器,以便拦截我在tocitem标记中使用的一些被JavaHelp忽略的属性。下面是toc.xml的样子:

代码语言:javascript
复制
<?xml version='1.0' encoding='ISO-8859-1'  ?>

<!DOCTYPE toc
   PUBLIC "-//Sun Microsystems Inc.//DTD JavaHelp TOC Version 2.0//EN"
     "http://java.sun.com/products/javahelp/toc_2_0.dtd">
<toc version="2.0">
   <tocitem text="Introduction" target="intro" action="myapp.help.introAction"/>
</toc>

我正在使用标准的SAX解析器解析toc.xml。当我解析文件时,我得到了以下异常:

代码语言:javascript
复制
myapp.help.TOCTreeFactory[WARN]: Failed to load TOC file from 'jar:file:/home/samad/myapp.jar!/workflow-help/toc.xml'

Caused by:
http://java.sun.com/javase/technologies/desktop/javahelp/toc_2_0.dtd
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.startEntity(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.startDTDEntity(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDTDScannerImpl.setInputSource(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$DTDDriver.dispatch(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$DTDDriver.next(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown Source)
at myapp.help.TOCTreeFactory.createTree(TOCTreeFactory.java:43)
...

我打开网址http://java.sun.com/javase/technologies/desktop/javahelp/toc_2_0.dtd,我得到一个404。

如何解决此问题?我尝试下载JavaHelp发行版,但它没有包含SAX所需的toc_2_0.dtd文件。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-09-14 05:31:30

您是否尝试过关闭工厂中的验证?

代码语言:javascript
复制
SAXParserFactory pf = SAXParserFactory.newInstance();
pf.setValidating(false);

另一种选择是...Stop your Java SAX parser from downloading DTDs

票数 1
EN

Stack Overflow用户

发布于 2013-04-05 23:36:35

在寻找类似问题的解决方案时,我首先被引导到这个问题。setValidating()方法对我也不起作用。This answer to a related question将我引向了SAXParserFactorysetFeature() method,它确实起作用了。

代码语言:javascript
复制
SAXParserFactory spf = SAXParserFactory.newInstance();
spf.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3704498

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档