Xercesc - NAMESPACE_ERR:尝试以对名称空间不正确的方式创建或更改对象

时间:2015-08-07 16:20:56

标签: c++ xpath xerces-c

我正在使用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上找到的所有链接都没有帮助我。那么,有人可以直接帮助我吗?

1 个答案:

答案 0 :(得分:1)

我弄清楚问题是什么,并想在这里回答这个问题。也许别人有同样的问题...

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

<小时/> 有关更多信息,请参阅如何正确配置解析器: https://xerces.apache.org/xerces-c/apiDocs-3/classAbstractDOMParser.html#a1962795fff331583b34b78229364ded7