我想从 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/