Xsoup中XPath表达式//*[a/text()='bluetooth']解析报错求助
搞定Xsoup选择器解析错误的问题
嘿,我来帮你解决这个报错~你遇到的SelectorParseException是因为写的XPath表达式语法不对,原来的//*[a/text()='bluetooth']写法不符合XPath的嵌套规则,导致解析器没法识别。
为啥错了?
你应该是想找那些包含文本为bluetooth的<a>子元素的元素,但你把a/text()直接塞进方括号的写法是错误的。正确的逻辑是:在方括号里用a[text()='bluetooth']来表示“存在一个子元素<a>,它的文本正好是bluetooth”这个条件。
正确代码来了
根据你的实际需求,给你两种写法:
- 如果你要选所有包含文本为
bluetooth的<a>子元素的父元素,用这段代码:
System.out.println(Xsoup.compile("//*[a[text()='bluetooth']]").evaluate(document).get());
- 如果你其实就是想直接选文本是
bluetooth的<a>元素本身,那就更简单了:
System.out.println(Xsoup.compile("//a[text()='bluetooth']").evaluate(document).get());
小提醒
Xsoup是基于XPath语法的,写表达式的时候要注意条件嵌套:当筛选父元素时,要把对子元素的匹配条件(比如文本检查)嵌套在子元素的选择器里,别直接用子元素/属性的写法放在父元素的筛选条件里哦。
内容的提问来源于stack exchange,提问作者Bhagwati Malav
相关产品推荐
相关产品推荐

