我正在使用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上找到的所有链接都没有帮助我。那么,有人可以直接帮助我吗?
答案 0 :(得分:1)
我弄清楚问题是什么,并想在这里回答这个问题。也许别人有同样的问题...
代码是正确的。通过解析xml文件来创建问题。 创建DOMDocument的解析器无法正确解析命名空间,因为setDoNamesspace(...)默认设置为false。因此,在dom树中没有设置名称空间并导致错误。 这里的问题是,如果你只是打印dom树,它将显示正确的命名空间和名称。
<小时/> 有关更多信息,请参阅如何正确配置解析器: https://xerces.apache.org/xerces-c/apiDocs-3/classAbstractDOMParser.html#a1962795fff331583b34b78229364ded7