如何使用Jsoup选择空类元素

6
我希望你能够选择类名为class=""的元素,示例如下:
<li class="" > </li>

我使用了。
Elements topProductSecNav = topNavWrapper.select("li[class=]");

但是我遇到了 java.lang.IllegalArgumentException: String must not be empty 异常。

2个回答

3

使用以下代码:Elements topProductSecNav=topNavWrapper.select(li[class=\"\"]");
这里查看工作示例。


1
我会使用正则表达式 CSS 选择器 li[class~=^$]:
String html= "<li class=\"\" > </li>"
           + "<li class= > </li>"
           + "<li class > </li>"
           + "<li > </li>"
           + "<li class=\"test\" > </li>";
Document doc = Jsoup.parse(html,"");

Elements liWithClassButNoName = doc.select("li[class~=^$]");

for (Element li:liWithClassButNoName){
    System.out.println("li = "+ li);
}

以下是输出结果(仅前三个lis匹配):
li = <li class=""> </li>
li = <li class> </li>
li = <li class> </li>

说明:

~= 表示正则表达式,^$ 搜索空字符串

Jsoup 将删除第二个示例 li 元素中的 =,即 <li class= >。正则表达式也匹配了一个不存在的字符串,因此如果您需要过滤掉这些内容,则可能需要使用 @TDG 给出的解决方案。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接