如何使用Xsoup将Xpath转换为CSS选择器?

时间:2017-07-19 09:41:28

标签: java jsoup xsoup

我正在使用Jsoup进行HTML解析,但由于Jsoup不支持Xpath选择器,因此我使用Xsoup,这是Jsoup使用Xpath作为选择器。 在github的自述文件页面中:给出的例子:

@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

1 个答案:

答案 0 :(得分: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