基于Class属性定位HTML<tr>元素失败的技术求助
解决Jsoup中元素class判断失效的问题
你遇到的核心问题是Java中字符串比较的方式错误,再加上可能忽略了class属性的灵活匹配场景,我来一步步帮你搞定:
1. 为什么==判断会一直返回false?
在Java里,==是用来比较两个对象的内存引用地址,而不是字符串的实际内容。虽然tableRow.className()返回的内容看起来是"oddRow cellCont",但它和你写的字面量字符串可能不是同一个对象实例,所以用==比较永远会不相等。
正确的做法是用字符串的equals()方法来匹配内容:
if (tableRow.className().equals("oddRow cellCont")) { // 这里写你的业务逻辑 }
2. 更健壮的class匹配方案
如果页面渲染时class的顺序可能变化(比如偶尔变成cellCont oddRow),或者存在多余的空格,上面的equals()也会失效。这时候推荐用Jsoup内置的hasClass()方法,它可以单独检查某个class是否存在,容错性更强:
// 同时检查两个class是否都存在 if (tableRow.hasClass("oddRow") && tableRow.hasClass("cellCont")) { // 这里写你的业务逻辑 }
3. 额外调试小技巧
如果还是有问题,可以先打印出class的实际值和长度,排查是否有隐藏的空格或特殊字符:
String actualClass = tableRow.className(); System.out.println("实际class值:'" + actualClass + "',长度:" + actualClass.length());
这样能帮你快速定位是否有肉眼看不到的字符导致匹配失败。
内容的提问来源于stack exchange,提问作者Russel Kuate
相关产品推荐
相关产品推荐

