java : generating xpath using string matcher regex

标签 java regex xpath

我想从 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);

    }

此代码适用于基本标签结构,没有多个子节点,例如多个 <td>位于<tr> 。任何人都可以改进我的上述代码,以包括多个子项的 xpath 生成以及捕获 Id、Class 等属性。

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

最佳答案

正则表达式对于提取 Html 内容来说不太准确。

使用Jsoup Html 解析器

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

      }

关于java : generating xpath using string matcher regex,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21695911/

相关文章:

java - 无法将日期插入 HSQLdb

Java 正则表达式将连续的单词和数字返回到数组列表中

c# - "Namespace ' x ' is not defined"尽管先调用 GetNamespacesInScope

java - 将当前日期和时间附加到 XLSX 文件

java - FileSystemWatcher:忽略创建的临时文件和幻影文件

Spring REST 应用程序中安全约束的 Java 配置

python - 过滤 xml 文件以删除其中包含特定文本的行?

javascript - 外部链接的 Speedbump 也支持 mailto 链接

Java:用于匹配引号之间单词的正则表达式

javascript - 使用 xpath.js NPM 模块解析 XML