2017-07-19 47 views
0

我使用Jsoup进行HTML解析,但由于Jsoup不支持Xpath选择器,因此我使用Xsoup这是Jsoup使用Xpath作为选择器。 在GitHub的自述页:所举的例子:如何使用Xsoup将Xpath转换为CSS选择器?

@Test 
    public void testSelect() { 

     String html = "<html><div><a href='https://github.com'>github.com</a></div>" + 
       "<table><tr><td>a</td><td>b</td></tr></table></html>"; 

     Document document = Jsoup.parse(html); 

     String result = Xsoup.compile("//a/@href").evaluate(document).get(); 
     Assert.assertEquals("https://github.com", result); 

     List<String> list = Xsoup.compile("//tr/td/text()").evaluate(document).list(); 
     Assert.assertEquals("a", list.get(0)); 
     Assert.assertEquals("b", list.get(1)); 
    } 

能有人请解释什么需要在这个代码工作的改变。我已经确保了我添加所需的库asertj.jar和jsoup.jar

+0

“它将如何工作”为了什么?为“真正的HTML”? ^^ – azro

+0

@azro:在github链接中,只有这段代码片段没有上下文。我想知道如何以独立形式使用xsoup。 –

+0

你还不清楚,我没有看到你身边有任何障碍去尝试你需要做的事 – azro

回答

1

这里是工作的独立片段:

import java.util.List; 

import org.jsoup.Jsoup; 
import org.jsoup.nodes.Document; 

import us.codecraft.xsoup.Xsoup; 

public class TestXsoup { 
    public static void main(String[] args){ 

      String html = "<html> 
           <div> <a href='https://github.com'>github.com</a> </div> 
           <table><tr> 
             <td>a</td> 
             <td>b</td> 
           </tr></table> 
          </html>"; 

      Document document = Jsoup.parse(html); 

      List<String> filasFiltradas = Xsoup.compile("//tr/td/text()").evaluate(document).list(); 
      System.out.println(filasFiltradas); 

    } 
} 

输出:

[a, b] 

库包括:

  1. xsoup-0.3.1.jar
  2. jsoup-1.103.jar