gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 05:40:08 25 4
gpt4 key购买 nike

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

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

最佳答案

我想出了问题所在,想在这里回答这个问题。也许其他人有同样的问题...

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


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

关于c++ - Xercesc - NAMESPACE_ERR : An attempt is made to create or change an object in a way which is incorrect with regard to namespaces,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31882414/

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