c++ - 为什么我不能使用 xpath 来解析默认 namespace 中的节点?

标签 c++ xml msxml

我是一个 XML 新手,我有一个 XML 文档(我无法编辑它,因为它来自其他地方)但是它有一个像这样的根节点:

<Configuration xmlns="http://schemas.mycomp.com/product/settings" version="2.0.0">

我正在尝试使用 msxml 和 xpath 解析此文档,如果删除 xmlns 属性,我已经成功完成了。出于某种原因,有了这个 xmlns 属性,文档将无法解析。我尝试设置 msxml 解析以使用以下方法识别文档:

m_pXMLDoc->setProperty( _bstr_t(L"AllowDocumentFunction"), _variant_t(true));   
m_pXMLDoc->setProperty( _bstr_t(L"AllowXsltScript"), _variant_t(true));
m_pXMLDoc->setProperty( _bstr_t(L"SelectionLanguage"), _variant_t(L"XPath"));   
m_pXMLDoc->setProperty( _bstr_t(L"SelectionNamespaces"), _variant_t(L"xmlns='http://schemas.mycomp.com/product/settings'"));

m_pXMLDoc->preserveWhiteSpace = VARIANT_FALSE;
m_pXMLDoc->resolveExternals = VARIANT_TRUE; 
m_pXMLDoc->validateOnParse = VARIANT_FALSE;

从周围阅读来看,xpath 似乎只适用于“无名”命名空间,并且本文档设置了默认命名空间,因此它不再是“无名”。我可以使用 MSXML 设置 xpath 使用的命名空间吗?

最佳答案

来自 Microsoft:此行为是设计使然......

参见 http://support.microsoft.com/kb/288147

在指定 SelectionNamespaces 属性时使用命名空间前缀

关于c++ - 为什么我不能使用 xpath 来解析默认 namespace 中的节点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8818045/

相关文章:

c++ - 如何使用copy_if从2d vector 中复制特定项目

c++ - 如何在C++中的赋值中命名类标识符?

c++ - 关于夏令时的逻辑操作时间

javascript - 如何使用 javascript 和三个 XML 文件在 IE 8 和 Chrome 中显示 XSLT?

java - 我有一个涉及 Android 中的 Handle.postDelay 函数的问题

c++ - 是否有适用于 Windows 的优秀 C++ XML DOM 教程?

javascript - IXMLDOMDocument2 到字符串 javascript

c++ - 转换数据类型以添加​​到 QByteArray 以将原始数据写入文件

javascript - 无法从 SOAP 解析 xml

c++ - 使用 msxml 解析器验证 xml 模式