0

誰かが私にHTMLページに対してXPathクエリを実行できるJava用のライブラリをアドバイスできますか?

JAXPを使用しようとしましたが、修正できないような奇妙なエラーが発生し続けます(スレッド "main" java.io.IOException:サーバーがHTTP応答コードを返しました:URLの503:http ://www.w3.org/TR /xhtml1/DTD/xhtml1-transitional.dtd)。

どうもありがとうございます。

編集

私はこれを見つけました:

// Create a new SAX Parser factory
SAXParserFactory factory = SAXParserFactory.newInstance();

// Turn on validation
factory.setValidating(true);

// Create a validating SAX parser instance
SAXParser parser = factory.newSAXParser();

// Create a new DOM Document Builder factory
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();

// Turn on validation
factory.setValidating(true);

// Create a validating DOM parser
DocumentBuilder builder = factory.newDocumentBuilder();

http://www.ibm.com/developerworks/xml/library/x-jaxpval.htmlからしかし、引数をfalseに変更しても何も変更されませんでした。

4

2 に答える 2

1

パーサーを「非検証」に設定すると、検証がオフになります。DTDのフェッチを禁止しません。DTDのフェッチは、検証だけでなく、エンティティの拡張にも必要です...私が覚えている限りでは。

DTDのフェッチを抑制したい場合はEntityResolverDocumentBuilderFactoryまたはに適切なものを登録する必要がありますDocumentBuilder。常に空の文字列を返すようにEntityResolver'sメソッドを実装します。resolveEntity

于 2010-10-23T06:03:43.837 に答える
0

これを見てください:

http://www.w3.org/2005/06/blog/systeam/2008/02/08/w3c_s_excessive_dtd_traffic

おそらく、パーサーがDOM検証を実行するように設定されており、DTDを取得しようとしています。JAXPには、DTD検証を無効にする方法があり、有効であると想定されるドキュメントに対してXPATHを実行するだけです。私はJAXPを何年も使用していないので、これ以上役に立たなくてすみません。

于 2010-07-28T12:30:50.730 に答える