1

アプレットビューアで正常に動作するアプレットがありますが、サーバーに再生されると、XMLファイルを解析できません。

理由は単純です。SA​​Xパーサーは、JARではなくハードディスクでdtdを開こうとしています。

私はこれをするように言われました:

リソースへのURLは、URL(baseURL、pathString)コンストラクターを使用して簡単に形成できます。このコンストラクターでは、ベースURLはApplet.getDocumentBase()またはApplet.getCodeBase()から取得されます。

しかし、私の場合、これを適用する方法がわかりません。

ここにXMLサンプルがあります:

<?xml version="1.0"?>
<!DOCTYPE note SYSTEM "leveldtd.dtd">   
<level>
...
</level>

これが私のパーサーの初期化です

public static void parseThis(InputSource is) throws Exception{
        SAXParserFactory spf = SAXParserFactory.newInstance();
        SAXParser sp = spf.newSAXParser();
        XMLHandlerLevel myExampleHandler = new XMLHandlerLevel();
        XMLReader xr = sp.getXMLReader();
        xr.setContentHandler(myExampleHandler);
        /* Begin parsing */ 
        xr.parse(is);
    }

何か案は ?

ジェイソン

4

1 に答える 1

0

検証が必要ない場合は、SAXParserFactory.setValidating()で検証をオフにして、パーサーがDTDを読み取ろうとしないようにすることができます。

ただし、検証が必要な場合は、saxパーサーに独自のEntityResolverを設定することで、DTD/XSDリクエストをリダイレクトできます。

于 2011-06-23T13:38:07.800 に答える