Xercesc - NAMESPACE_ERR:试图以与名称空间相关的错误方式创建或更改对象

Xercesc - NAMESPACE_ERR: An attempt is made to create or change an object in a way which is incorrect with regard to namespaces

本文关键字:错误 方式 创建 对象 空间 ERR NAMESPACE Xercesc      更新时间:2023-10-16

我正在使用Xercesc-3-1,并且我正在尝试解析XPath。代码如下所示:


auto result = documents[ref.refDoc]->evaluate(XMLString::transcode(ref.oldXPath.c_str()),
                                        documents[ref.refDoc],
                                        documents[ref.refDoc]->createNSResolver(documents[ref.refDoc]->getFirstChild()),
                                        DOMXPathResult::STRING_TYPE,
                                        nullptr);

文档根目录的第一个子目录包含xml:example定义。我没有看到问题,但我得到一个DOMException:

异常消息:试图以与名称空间相关的不正确的方式创建或更改对象

我在Stackoverflow上找到的所有链接都没有帮助我。有人能直接帮我吗?

我知道问题是什么了,想在这里回答这个问题。也许别人也有同样的问题……

代码正确。问题是通过解析xml文件产生的。创建DOMDocument的解析器不能正确解析名称空间,因为setDoNamesspace(…)默认设置为false。因此,dom树中没有设置名称空间,这导致了错误。这里的问题是,如果只打印dom树,它将显示正确的名称空间和名称。


有关如何正确配置解析器的更多信息:https://xerces.apache.org/xerces-c/apiDocs-3/classAbstractDOMParser.html#a1962795fff331583b34b78229364ded7