How to select Element with empty class using Jsoup
我想用 class="" 选择元素,比如
我用过
1
| Elements topProductSecNav = topNavWrapper.select("li[class=]"); |
但我得到了 java.lang.IllegalArgumentException: String must not be empty 异常。
使用这个:Elements topProductSecNav=topNavWrapper.select(li[class=""]");
请参阅此处的工作示例。
我会使用正则表达式 css 选择器 li[class~=^$]:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| 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 );
} |
导致此输出(仅前 3 个 lis 匹配):
1 2 3 4 5 6 7 8
| li = <li class="">
</li>
li = <li class>
</li>
li = <li class>
</li> |
解释:
~= 表示正则表达式和
^$ 搜索空字符串
Jsoup 将删除第二个示例 li 元素 <li class= > 中的 =。正则表达式也显然匹配一个不存在的字符串,因此如果您需要过滤掉这些,您可能需要使用@TDG 给出的解决方案。