我想使用Jsoup css选择器返回具有特定命名空间的所有元素,例如<server:cpu> <server:memory>
。
Document doc = Jsoup.parse("<server:cpu> <server:memory>");
Elements el = doc.select("sever|*");
但是返回 Could not parse query
例外
此文档https://jsoup.org/apidocs/org/jsoup/select/Selector.html表示您可以使用:
* |任何名称空间ns中的E类E元素
但我想做相反的事情:获取任何类型的命名空间ns中的元素。这可能吗?
编辑:
我不再获得异常,但是在执行doc.select("sever|*");
答案 0 :(得分:1)
我在Scala中编写了一些东西来完成与通配符()的命名空间匹配,即(&#34; namespace | &#34;),因为JSoup版本1.10.2不支持
def getElementsByNamespace(element: org.jsoup.nodes.Element, namespace: String): org.jsoup.select.Elements = {
import collection.JavaConverters._
val elements = element.select("*").asScala.filter(_.tagName().startsWith(s"$namespace:"))
new Elements(elements.asJava)
}
对于java版本,请参阅@Pshemo
建议的链接https://stackoverflow.com/a/23766900感谢@NaderHadjiGhanbari帮助我理解并从Java集合转换为Scala集合