gpt4 book ai didi

java - XPath 表达式不为//元素返回任何内容,但//* 返回一个计数

转载 作者:搜寻专家 更新时间:2023-11-01 02:18:10 26 4
gpt4 key购买 nike

我将 XOM 与以下示例数据一起使用:

Element root = cleanDoc.getRootElement();
//find all the bold elements, as those mark institution and clinic.
Nodes nodes = root.query("//*");

<html xmlns="http://www.w3.org/1999/xhtml" xmlns:html="http://www.w3.org/1999/xhtml">
<head>
<title>Patient Information</title>
</head>
</html>

以下元素返回许多元素(来自真实数据):

//*

但是像

//head

什么都不返回。如果我遍历根的子项,数字似乎是匹配的,如果我打印元素名称,一切看起来都是正确的。

我使用 HTML,用 tagsoup 解析它,然后从生成的字符串构建一个 XOM 文档。这其中的哪一部分会出现如此可怕的错误?我觉得这里发生了一些奇怪的编码问题,但我只是没有看到它。 Java 字符串就是字符串,对吧?

最佳答案

您的文档有一个默认命名空间,这意味着在 XPath 模型中所有元素都在该命名空间中。

查询应该是//html:head。您必须向 XPath 查询提供命名空间映射。

请注意,虽然 XPath 表达式使用命名空间前缀,但必须匹配的是命名空间 uri。

XPathContext ctx = new XPathContext("html", "http://www.w3.org/1999/xhtml");
Nodes nodes = root.query("//html:head", ctx );

关于java - XPath 表达式不为//元素返回任何内容,但//* 返回一个计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2323139/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com