【问题标题】:java : generating xpath using string matcher regexjava:使用字符串匹配器正则表达式生成xpath
【发布时间】:2014-02-11 07:42:54
【问题描述】:

我想从 html 文件生成 xPath。到目前为止,我已经成功地将 Html 源存储在字符串中并使用匹配器正则表达式生成基本 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);

    }

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

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

【问题讨论】:

  • 您究竟为什么认为使用正则表达式会对您有所帮助?使用适当的 HTML 解析器,使用正则表达式是不可能的。

标签: java regex string xpath matcher


【解决方案1】:

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

使用JsoupHTML解析器

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());
             }
        }

      }

【讨论】:

    猜你喜欢
    • 2019-04-04
    • 1970-01-01
    • 2013-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多