2013-10-22 2 views
0

다음은 "제목"을 연관시켜야하는 html 문서의 일부입니다 (예 : FILE_BYTES_WRITTEN - 첫 번째 항목의 text() 항목이 성공한 상태입니다.XPath 축을 지원하는 Java Html 파서?

/td[text()='FILE_BYTES_WRITTEN']/following-sibling::td 

doc 후 조각 :

다음 XPath는 파이썬 LXML에서 잘 작동

<td>HDFS_BYTES_READ</td> 
    <td align="right">4,825</td> 
    <td align="right">0</td> 
    <td align="right">4,825</td> 
</tr> 

    <tr> 

    <td>FILE_BYTES_WRITTEN</td> 
    <td align="right">415,881</td> 
    <td align="right">48,133</td> 
    <td align="right">464,014</td> 
</tr> 

    <tr> 

    <td>HDFS_BYTES_WRITTEN</td> 
    <td align="right">98,580,205</td> 
    <td align="right">2,010</td> 
    <td align="right">98,582,215</td> 
</tr> 

하지만 자바에서이 작업을 수행하려고 할 때 덜 성공을 데. 이것을 지원할 수있는 java html 파서가 있는지 확실하지 않습니다. 현재 HtmlCleaner를 사용 중입니다.

답변

0

프리앰블로 : @Sage에서 제안한대로 HtmlUnit을 실제로 볼 것입니다. 한편

는 :

가) 실제로 XHTML로 변환하는 DomSerializer있다 HtmlCleaner : 우리가

public static Document toXhtml(String html) throws ParserConfigurationException { 
    HtmlCleaner cleaner = new HtmlCleaner(); 
    TagNode tagNode = cleaner.clean(html); 
    DomSerializer domSerializer = new DomSerializer(new CleanerProperties()); 
    return domSerializer.createDOM(tagNode); 
} 

b)는 점에서이 XHTML 우리 나는 다음과 같은 솔루션과 함께 올라와있다 선택의 여지가 많습니다 - 예를 들어 xalan을 사용하십시오 ..

1

getByXPath() 기능이 좋은 HtmlUnit을 들여다 볼 수 있습니다. 그것은 무책임한 브라우저입니다. 예제를 살펴보십시오.

파싱에 가장 많이 사용하는 또 다른 하나는 은 이러한 작업을 쉽게 수행 할 수있는 강력한 기능을 가진 Jsoup입니다. selector class 설명서를 확인하십시오. 필요한 모든 것을 찾을 수 있습니다.