2

JavaHelpによって無視されるタグでtoc.xml使用するいくつかの属性をインターセプトするために、JavaHelpのファイル用のXMLパーサーを作成しました。tocitem次のtoc.xmlようになります。

<?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>

toc.xml標準のSAXパーサーを使用して解析しています。ファイルを解析すると、次の例外が発生します。

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)
...

URLを開くhttp://java.sun.com/javase/technologies/desktop/javahelp/toc_2_0.dtdと、404が表示されます。

この問題を解決するにはどうすればよいですか?toc_2_0.dtdJavaHelpディストリビューションをダウンロードしようとしましたが、SAXに必要なファイルが含まれていません。

4

2 に答える 2

1

工場で検証をオフにしてみましたか?

SAXParserFactory pf = SAXParserFactory.newInstance();
pf.setValidating(false);

もう1つの方法... JavaSAXパーサーによるDTDのダウンロードを停止します

于 2010-09-13T21:31:30.183 に答える
0

同様の問題の解決策を探すとき、私は最初にこの質問に導かれました。このsetValidating()方法も私にはうまくいきませんでした。 関連する質問に対するこの回答は、SAXParserFactoryメソッドを示しました。これは機能しました。setFeature()

SAXParserFactory spf = SAXParserFactory.newInstance();
spf.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false);
于 2013-04-05T15:36:35.210 に答える