java:使用字符串匹配器regex生成xpath

时间:2014-02-11 07:42:55

标签: java regex string xpath matcher

我想从html文件生成xPath。到目前为止,我已成功将Html源存储在String中并使用matcher正则表达式生成基本xpath,如下所示: -

 String text   = "<html><body><table><tr id=\"x\"><td>abc</td><td></td><td>xyz</td></tr></table></body></html>";

//I want xpath till label "xyz"
         String unwanted= "xyz";  

//so splitting  and storing needed String 
        String[] neededString=text.split(unwanted);

        String a="";

//pattern for extracting tags
        String patternString1 = "<(.+?)>";

        Pattern pattern = Pattern.compile(patternString1);
        Matcher matcher = pattern.matcher(neededString[0]);

        while(matcher.find()) {

             a=a.concat(matcher.group(1)+"/");
        System.out.println(a);

    }

此代码适用于没有多个子节点的基本标记结构,例如<td>中的多个<tr>。任何人都可以改进我的上面的代码,包括为多个孩子生成xpath,以及捕获像Ids,Class等的属性。

非常感谢任何帮助。     提前谢谢。

1 个答案:

答案 0 :(得分:1)

正则表达式对于提取Html内容并不是那么准确。

使用Jsoup Html Parser

public static void main(String[] args){
       String html = "<html><body><table><tr id=\"x\"><td>abc</td><td></td>" +
            "<td>xyz</td></tr></table></body></html>";

       Document doc = Jsoup.parse(html);

       for (Element table : doc.select("table")) {
             for (Element row : table.select("tr[id=x]")) {
                Elements tds = row.select("td)");
                System.out.println(tds.get(2).text());
             }
        }

      }