Я пытаюсь написать утилиту xsd validator с помощью MSXML 6.0. Все это хорошо и приятно, кроме этой одной линии:Добавление коллекции схем в экземпляр SAXXMLReader60 с использованием MSXML 6.0
this->myReader->putProperty(L"schemas", pXS);
Это бросает эту ошибку: error C2664: 'ISAXXMLReader::putProperty' : cannot convert parameter 2 from 'MSXML2::IXMLDOMSchemaCollectionPtr' to 'VARIANT'
что вполне понятно, но как можно добавить экземпляр схемы для читателя?
FYI myReader
это:
ISAXXMLReader * myReader;
и инициализируется следующим образом:
HRESULT hr = CoCreateInstance(__uuidof(SAXXMLReader60),
NULL,
CLSCTX_ALL,
__uuidof(ISAXXMLReader),
(void **)&this->myReader);
И PXS является:
MSXML2::IXMLDOMSchemaCollectionPtr pXS;
pXS.CreateInstance(__uuidof(MSXML2::XMLSchemaCache60), NULL, CLSCTX_INPROC_SERVER);
Некоторые из ссылок, которые я прочитал:
http://msdn.microsoft.com/en-us/library/ms762787(v=VS.85).aspx
http://support.microsoft.com/kb/309535
http://msdn.microsoft.com/en-us/library/windows/desktop/cc507429(v=VS.85).aspx
Как обычно документации MSDN очень приятно ..
пример они обеспечивают работу, но мне нужно собрать все ошибки, поэтому я перевел VB пример в одной из ссылок на C++. Единственная ошибка, которая остается таковой. Любая помощь приветствуется.
Edit:
Выполнив эту хорошую ссылку:
разделhttp://msdn.microsoft.com/en-us/library/windows/desktop/ms766451(v=vs.85).aspx
C++:
Пространство имен, чтобы связать с указанной схемой. Пустая строка, "", свяжет схему с пустым пространством имен, xmlns = "".
И делает это:
nResult = pIXMLDOMSchemaCollection2Ptr->add(_T(""), _T("c:\\temp\\collection.xsd"));
Хорошая авария происходит. Кто-нибудь знает, как на земле добавить схему без пространства имен в этой вещи?