2010-07-28 17 views
0

誰能告訴我一個Java庫,讓我在一個HTML頁面進行XPath查詢?我試過使用JAXP,但它一直給我一個奇怪的錯誤,我似乎無法修復(線程「主」的java.io.IOException:服務器返回HTTP響應代碼:503的URL:http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd)。查詢的HTML頁面使用XPath在Java中

非常感謝。

編輯

我發現這一點:

// 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沒有任何改變。

+0

幾個相關的問題 - 看http://stackoverflow.com/questions/9766776/extract-content-using-xpath-from-an-html-doc-using-pure-java http://stackoverflow.com/questions/3361263/library-to-query-html-with-xpath-in-java http://stackoverflow.com/questions/9022140/using-xpath-contains-against-html-in-java – 2013-01-07 00:39:57

回答

1

設置解析器「非驗證」只是關閉驗證;它確實是而不是禁止獲取DTD。據我所知,獲取DTD不僅需要驗證,還需要實體擴展。

如果您想要取消DTD的提取,您需要在DocumentBuilderFactoryDocumentBuilder上註冊合適的EntityResolver。實施EntityResolverresolveEntity方法總是返回一個空字符串。