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

我正在使用 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);

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

Exception message:attempt is made to create or change an object in a way which is incorrect with respect to namespaces

我在 Whosebug 上找到的所有链接都没有帮助我。那么,有人可以直接帮助我吗?

我想通了问题是什么,想在这里回答这个问题。也许其他人有同样的问题...

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


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