我是一个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只适用于“no name”命名空间,而且这个文档设置了默认命名空间,因此它不再是“没有名字”。我可以使用MSXML设置xpath使用的命名空间吗?
答案 0 :(得分:2)
来自Microsoft:此行为是设计......
请参阅http://support.microsoft.com/kb/288147
指定SelectionNamespaces属性时使用名称空间的前缀