0

谁能告诉我一个 Java 库,它允许我在 html 页面上执行 XPath 查询?

我尝试使用 JAXP,但它一直给我一个奇怪的错误,我似乎无法修复(线程“main”java.io.IOException:服务器返回 HTTP 响应代码:503 用于 URL: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但是将 argumrent 设置为 false 并没有改变任何东西。

4

2 回答 2

1

将解析器设置为“非验证”只会关闭验证;它不会禁止获取 DTD。获取 DTD 不仅用于验证,还用于实体扩展……据我所知。

如果你想禁止获取 DTD,你需要注册一个正确EntityResolverDocumentBuilderFactoryor DocumentBuilder。实现EntityResolver'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 回答