Я пытаюсь написать утилиту проверки xsd с использованием 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 ++.Единственная ошибка, которая остается, это.Любая помощь приветствуется.
Редактировать:
После перехода по этой приятной ссылке:
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"));
Произойдет приятный сбой.Кто-нибудь знает, как вообще добавить в эту схему схему без пространства имен?