我是一个 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/