我正在使用 Xerces 2.9.1 执行一些 XML 解析。XML 包含命名空间,我将 Xerces 配置为可感知命名空间。
我定义了两个前缀,rec和com。rec 在根标签中定义,com在每个使用它的节点中声明。
<rec:root xmlns:rec="...">
<rec:dummy ...>
<com:item xmlns:com="..." />
...
解析以下 XPath 表达式时出现异常:
/rec:root/rec:dummy/com:item
XPathStylesheetDOM3Exception:前缀必须解析为命名空间:com
我在博客上找到了这个,它谈到了 Xalan,但我观察到 Xerces 具有相同的行为。
好吧,你可能会争论一个设计缺陷,因为它只使用在传递给它的节点上找到的映射,即在我们的例子中,到顶级名称空间声明。因此,让我们将命名空间声明移至顶层,以获取以下 XML 输入
将xmlns:com移动到根标记可以解决问题,但我无法控制该文件。