Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Jsoup将任何元素与命名空间匹配_Java_Css_Xml_Scala_Jsoup - Fatal编程技术网

Java Jsoup将任何元素与命名空间匹配

Java Jsoup将任何元素与命名空间匹配,java,css,xml,scala,jsoup,Java,Css,Xml,Scala,Jsoup,我想使用Jsoup css选择器返回具有特定名称空间的所有元素,例如 Document doc = Jsoup.parse("<server:cpu> <server:memory>"); Elements el = doc.select("sever|*"); documentdoc=Jsoup.parse(“”); 元素el=doc.select(“sever |*”); 但返回的无法解析查询异常 本文档说明您可以使用: *|在任何名称空间ns中都有E类型的元素

我想使用Jsoup css选择器返回具有特定名称空间的所有元素,例如

Document doc = Jsoup.parse("<server:cpu> <server:memory>");
Elements el = doc.select("sever|*");
documentdoc=Jsoup.parse(“”);
元素el=doc.select(“sever |*”);
但返回的
无法解析查询
异常

本文档说明您可以使用:

*|在任何名称空间ns中都有E类型的元素

但我想做的正好相反:在名称空间ns中获取任何类型的元素。这可能吗

编辑:
我不再得到异常,但是在执行
doc.select(“sever |*”)之后,我得到了一个空元素对象

我在Scala中编写了一些东西来完成与通配符()的名称空间匹配,即(“名称空间|”),因为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建议的链接


感谢@naderhajighanbari帮助我理解Java集合并将其转换为Scala集合

,我无法重现这个问题。同样在引号中的一行下面,我们可以看到名称空间ns
中类型E的
ns | E元素,这表明
sever*
应该可以工作。顺便说一句,Jsoup.parse(“file.xhtml”)
不会尝试查找和解析
file.xhtml
文件,但会将
file.xhtml
视为需要解析的原始数据。可能您使用的是较旧版本的Jsoup。它似乎正在处理
1.10.1
1.10.2
@Pshemo“Jsoup.parse(“file.xhtml”);”只是一个例子。我会解决你的问题。然而,说“建议服务器应该工作”并不能证实任何事情。我已经试过了,但它不起作用。@Pshemo我使用的是1.10.2版,以您的实际用例为基础。可能的解决方案是使用您自己的迭代器,该迭代器将遍历所有节点,并检查标记的名称是否以
服务器:
开头。如果是,则将该元素/节点添加到包含该元素的列表中。这里有一个例子。