Я новичок в 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 работает только в пространстве имен «без имени», и этот документ устанавливает пространство имен по умолчанию, так что оно больше не «без имени». Могу ли я установить пространство имен, которое xpath использует с помощью MSXML?