Уважаемые форумчане!
Киньте ссылку, пожалуйста, где можно скачать примеры на С/С++
создания/чтения xml-файлов для библиотеки msxml.
Заранее признателен, Владимир.
Re: Примеры кода на С для создания/чтения XML-файлов для msx
Здравствуйте, VIRT, Вы писали:
VIR>Уважаемые форумчане! VIR>Киньте ссылку, пожалуйста, где можно скачать примеры на С/С++ VIR>создания/чтения xml-файлов для библиотеки msxml.
Здравствуйте, Odi$$ey, Вы писали:
OE>Здравствуйте, VIRT, Вы писали:
VIR>>Уважаемые форумчане! VIR>>Киньте ссылку, пожалуйста, где можно скачать примеры на С/С++ VIR>>создания/чтения xml-файлов для библиотеки msxml.
OE>http://www.rsdn.ru/article/?xml/msxml.xml
Немаловажно: по ссылке если сходить, то там ничего о создании XML-файлов, как XML-документов, не сказано. Так что пост был бесполезен (наполовину, на первую). IMHO.
Я вот все чаще думаю:
Все великие люди уже умерли...
Вот и я себя плохо чувствую!
Re[3]: Примеры кода на С для создания/чтения XML-файлов для
Здравствуйте, Kont, Вы писали:
VIR>>>Киньте ссылку, пожалуйста, где можно скачать примеры на С/С++ VIR>>>создания/чтения xml-файлов для библиотеки msxml.
OE>>http://www.rsdn.ru/article/?xml/msxml.xml
K>Немаловажно: по ссылке если сходить, то там ничего о создании XML-файлов, как XML-документов, не сказано. Так что пост был бесполезен (наполовину, на первую). IMHO.
а цепочка spXMLDOM.CoCreateInstance — spXMLDOM->createNode — spXMLNode->appendChild — spXMLDOM->save это не создание XML документа и потом файла? Слова выкусывал прям по-порядку из статьи.
Re[4]: Примеры кода на С для создания/чтения XML-файлов для
Здравствуйте, Odi$$ey, Вы писали:
OE>а цепочка spXMLDOM.CoCreateInstance — spXMLDOM->createNode — spXMLNode->appendChild — spXMLDOM->save это не создание XML документа и потом файла? Слова выкусывал прям по-порядку из статьи.
А ты сам пробовал по этой цепочке пример создать? У меня не получается! Я прошу немного: работающий пример, в котором создается документ, желательно валидный и записывается на диск.
Я вот все чаще думаю:
Все великие люди уже умерли...
Вот и я себя плохо чувствую!
Re[5]: Примеры кода на С для создания/чтения XML-файлов для
Здравствуйте, Kont, Вы писали:
OE>>а цепочка spXMLDOM.CoCreateInstance — spXMLDOM->createNode — spXMLNode->appendChild — spXMLDOM->save это не создание XML документа и потом файла? Слова выкусывал прям по-порядку из статьи.
K>А ты сам пробовал по этой цепочке пример создать? У меня не получается!
Что конкретно не получается? где код? какие ошибки возвращаются?
Re[5]: Примеры кода на С для создания/чтения XML-файлов для
Здравствуйте, Kont, Вы писали:
K>Здравствуйте, Odi$$ey, Вы писали:
OE>>а цепочка spXMLDOM.CoCreateInstance — spXMLDOM->createNode — spXMLNode->appendChild — spXMLDOM->save это не создание XML документа и потом файла? Слова выкусывал прям по-порядку из статьи.
K>А ты сам пробовал по этой цепочке пример создать? У меня не получается! Я прошу немного: работающий пример, в котором создается документ, желательно валидный и записывается на диск.
N>Спрашивай конкретнее что у тебя не получилось.
Если добавить
#import "msxml4.dll"
using namespace MSXML2;
то ошибки следующие:
C:\Program Files\Microsoft Visual Studio\MyProjects\XMLParser\XMLNodeExerciser.cpp(45) : error C2660: 'load' : function does not take 2 parameters
C:\Program Files\Microsoft Visual Studio\MyProjects\XMLParser\XMLNodeExerciser.cpp(56) : error C2660: 'selectSingleNode' : function does not take 2 parameters
C:\Program Files\Microsoft Visual Studio\MyProjects\XMLParser\XMLNodeExerciser.cpp(66) : error C2660: 'createNode' : function does not take 4 parameters
C:\Program Files\Microsoft Visual Studio\MyProjects\XMLParser\XMLNodeExerciser.cpp(75) : error C2660: 'appendChild' : function does not take 2 parameters
C:\Program Files\Microsoft Visual Studio\MyProjects\XMLParser\XMLNodeExerciser.cpp(85) : error C2664: 'setAttribute' : cannot convert parameter 1 from 'class ATL::CComBSTR' to 'class _bstr_t'
No constructor could take the source type, or constructor overload resolution was ambiguous
C:\Program Files\Microsoft Visual Studio\MyProjects\XMLParser\XMLNodeExerciser.cpp(95) : error C2660: 'selectSingleNode' : function does not take 2 parameters
Error executing cl.exe.
XMLNodeExerciser.exe — 6 error(s), 0 warning(s)
Если не добавлять то:
Compiling...
XMLNodeExerciser.cpp
c:\program files\microsoft visual studio\myprojects\xmlparser\xmlnodeexerciser.cpp(38) : error C2065: 'IXMLDOMDocument' : undeclared identifier
c:\program files\microsoft visual studio\myprojects\xmlparser\xmlnodeexerciser.cpp(38) : error C2955: 'CComPtr' : use of class template requires template argument list
c:\program files\microsoft visual studio\vc98\atl\include\atlbase.h(563) : see declaration of 'CComPtr'
c:\program files\microsoft visual studio\myprojects\xmlparser\xmlnodeexerciser.cpp(38) : error C2133: 'spXMLDOM' : unknown size
c:\program files\microsoft visual studio\myprojects\xmlparser\xmlnodeexerciser.cpp(38) : error C2512: 'CComPtr' : no appropriate default constructor available
c:\program files\microsoft visual studio\myprojects\xmlparser\xmlnodeexerciser.cpp(38) : error C2262: 'spXMLDOM' : cannot be destroyed
c:\program files\microsoft visual studio\myprojects\xmlparser\xmlnodeexerciser.cpp(39) : error C2065: 'DOMDocument' : undeclared identifier
c:\program files\microsoft visual studio\myprojects\xmlparser\xmlnodeexerciser.cpp(39) : error C2661: 'CoCreateInstance' : no overloaded function takes 1 parameters
c:\program files\microsoft visual studio\myprojects\xmlparser\xmlnodeexerciser.cpp(45) : error C2678: binary '->' : no operator defined which takes a left-hand operand of type 'class ATL::CComPtr' (or there is no acceptable conversion)
c:\program files\microsoft visual studio\myprojects\xmlparser\xmlnodeexerciser.cpp(45) : error C2039: 'load' : is not a member of 'CComPtr'
c:\program files\microsoft visual studio\vc98\atl\include\atlbase.h(563) : see declaration of 'CComPtr'
c:\program files\microsoft visual studio\myprojects\xmlparser\xmlnodeexerciser.cpp(55) : error C2065: 'IXMLDOMNode' : undeclared identifier
c:\program files\microsoft visual studio\myprojects\xmlparser\xmlnodeexerciser.cpp(55) : error C2955: 'CComPtr' : use of class template requires template argument list
c:\program files\microsoft visual studio\vc98\atl\include\atlbase.h(563) : see declaration of 'CComPtr'
c:\program files\microsoft visual studio\myprojects\xmlparser\xmlnodeexerciser.cpp(55) : error C2133: 'spXMLNode' : unknown size
c:\program files\microsoft visual studio\myprojects\xmlparser\xmlnodeexerciser.cpp(55) : error C2512: 'CComPtr' : no appropriate default constructor available
c:\program files\microsoft visual studio\myprojects\xmlparser\xmlnodeexerciser.cpp(55) : error C2262: 'spXMLNode' : cannot be destroyed
c:\program files\microsoft visual studio\myprojects\xmlparser\xmlnodeexerciser.cpp(56) : error C2678: binary '->' : no operator defined which takes a left-hand operand of type 'class ATL::CComPtr' (or there is no acceptable conversion)
c:\program files\microsoft visual studio\myprojects\xmlparser\xmlnodeexerciser.cpp(56) : error C2039: 'selectSingleNode' : is not a member of 'CComPtr'
c:\program files\microsoft visual studio\vc98\atl\include\atlbase.h(563) : see declaration of 'CComPtr'
c:\program files\microsoft visual studio\myprojects\xmlparser\xmlnodeexerciser.cpp(65) : error C2955: 'CComPtr' : use of class template requires template argument list
c:\program files\microsoft visual studio\vc98\atl\include\atlbase.h(563) : see declaration of 'CComPtr'
c:\program files\microsoft visual studio\myprojects\xmlparser\xmlnodeexerciser.cpp(65) : error C2133: 'spXMLChildNode' : unknown size
c:\program files\microsoft visual studio\myprojects\xmlparser\xmlnodeexerciser.cpp(65) : error C2512: 'CComPtr' : no appropriate default constructor available
c:\program files\microsoft visual studio\myprojects\xmlparser\xmlnodeexerciser.cpp(65) : error C2262: 'spXMLChildNode' : cannot be destroyed
c:\program files\microsoft visual studio\myprojects\xmlparser\xmlnodeexerciser.cpp(66) : error C2678: binary '->' : no operator defined which takes a left-hand operand of type 'class ATL::CComPtr' (or there is no acceptable conversion)
c:\program files\microsoft visual studio\myprojects\xmlparser\xmlnodeexerciser.cpp(66) : error C2039: 'createNode' : is not a member of 'CComPtr'
c:\program files\microsoft visual studio\vc98\atl\include\atlbase.h(563) : see declaration of 'CComPtr'
c:\program files\microsoft visual studio\myprojects\xmlparser\xmlnodeexerciser.cpp(66) : error C2065: 'NODE_ELEMENT' : undeclared identifier
c:\program files\microsoft visual studio\myprojects\xmlparser\xmlnodeexerciser.cpp(74) : error C2955: 'CComPtr' : use of class template requires template argument list
c:\program files\microsoft visual studio\vc98\atl\include\atlbase.h(563) : see declaration of 'CComPtr'
c:\program files\microsoft visual studio\myprojects\xmlparser\xmlnodeexerciser.cpp(74) : error C2133: 'spInsertedNode' : unknown size
c:\program files\microsoft visual studio\myprojects\xmlparser\xmlnodeexerciser.cpp(74) : error C2512: 'CComPtr' : no appropriate default constructor available
c:\program files\microsoft visual studio\myprojects\xmlparser\xmlnodeexerciser.cpp(74) : error C2262: 'spInsertedNode' : cannot be destroyed
c:\program files\microsoft visual studio\myprojects\xmlparser\xmlnodeexerciser.cpp(75) : error C2678: binary '->' : no operator defined which takes a left-hand operand of type 'class ATL::CComPtr' (or there is no acceptable conversion)
c:\program files\microsoft visual studio\myprojects\xmlparser\xmlnodeexerciser.cpp(75) : error C2039: 'appendChild' : is not a member of 'CComPtr'
c:\program files\microsoft visual studio\vc98\atl\include\atlbase.h(563) : see declaration of 'CComPtr'
c:\program files\microsoft visual studio\myprojects\xmlparser\xmlnodeexerciser.cpp(81) : error C2065: 'IXMLDOMElement' : undeclared identifier
c:\program files\microsoft visual studio\myprojects\xmlparser\xmlnodeexerciser.cpp(81) : error C2955: 'CComQIPtr' : use of class template requires template argument list
c:\program files\microsoft visual studio\vc98\atl\include\atlbase.h(715) : see declaration of 'CComQIPtr'
c:\program files\microsoft visual studio\myprojects\xmlparser\xmlnodeexerciser.cpp(81) : error C2133: 'spXMLChildElement' : unknown size
c:\program files\microsoft visual studio\myprojects\xmlparser\xmlnodeexerciser.cpp(81) : error C2512: 'CComQIPtr' : no appropriate default constructor available
c:\program files\microsoft visual studio\myprojects\xmlparser\xmlnodeexerciser.cpp(81) : error C2262: 'spXMLChildElement' : cannot be destroyed
c:\program files\microsoft visual studio\myprojects\xmlparser\xmlnodeexerciser.cpp(82) : error C2678: binary '=' : no operator defined which takes a left-hand operand of type 'class ATL::CComQIPtr' (or there is no acceptable conversion)
c:\program files\microsoft visual studio\myprojects\xmlparser\xmlnodeexerciser.cpp(82) : error C2582: 'ATL::CComQIPtr' : 'operator =' function is unavailable
c:\program files\microsoft visual studio\myprojects\xmlparser\xmlnodeexerciser.cpp(85) : error C2678: binary '->' : no operator defined which takes a left-hand operand of type 'class ATL::CComQIPtr' (or there is no acceptable conversion)
c:\program files\microsoft visual studio\myprojects\xmlparser\xmlnodeexerciser.cpp(85) : error C2039: 'setAttribute' : is not a member of 'CComQIPtr'
c:\program files\microsoft visual studio\vc98\atl\include\atlbase.h(715) : see declaration of 'CComQIPtr'
c:\program files\microsoft visual studio\myprojects\xmlparser\xmlnodeexerciser.cpp(93) : error C2678: binary '=' : no operator defined which takes a left-hand operand of type 'class ATL::CComPtr' (or there is no acceptable conversion)
c:\program files\microsoft visual studio\myprojects\xmlparser\xmlnodeexerciser.cpp(93) : error C2582: 'ATL::CComPtr' : 'operator =' function is unavailable
c:\program files\microsoft visual studio\myprojects\xmlparser\xmlnodeexerciser.cpp(95) : error C2678: binary '->' : no operator defined which takes a left-hand operand of type 'class ATL::CComPtr' (or there is no acceptable conversion)
c:\program files\microsoft visual studio\myprojects\xmlparser\xmlnodeexerciser.cpp(95) : error C2039: 'selectSingleNode' : is not a member of 'CComPtr'
c:\program files\microsoft visual studio\vc98\atl\include\atlbase.h(563) : see declaration of 'CComPtr'
c:\program files\microsoft visual studio\myprojects\xmlparser\xmlnodeexerciser.cpp(101) : error C2678: binary '->' : no operator defined which takes a left-hand operand of type 'class ATL::CComPtr' (or there is no acceptable conversion)
c:\program files\microsoft visual studio\myprojects\xmlparser\xmlnodeexerciser.cpp(101) : error C2039: 'get_nodeTypedValue' : is not a member of 'CComPtr'
c:\program files\microsoft visual studio\vc98\atl\include\atlbase.h(563) : see declaration of 'CComPtr'
c:\program files\microsoft visual studio\myprojects\xmlparser\xmlnodeexerciser.cpp(119) : error C2678: binary '->' : no operator defined which takes a left-hand operand of type 'class ATL::CComPtr' (or there is no acceptable conversion)
c:\program files\microsoft visual studio\myprojects\xmlparser\xmlnodeexerciser.cpp(119) : error C2039: 'save' : is not a member of 'CComPtr'
c:\program files\microsoft visual studio\vc98\atl\include\atlbase.h(563) : see declaration of 'CComPtr'
Error executing cl.exe.
XMLNodeExerciser.exe — 46 error(s), 0 warning(s)
Если кто знает в чем дело , подскажите пожалуйста.
Re[7]: Примеры кода на С для создания/чтения XML-файлов для
N>>Спрашивай конкретнее что у тебя не получилось. S>Если добавить S>#import "msxml4.dll" S>using namespace MSXML2; S>то ошибки следующие:
S>C:\Program Files\Microsoft Visual Studio\MyProjects\XMLParser\XMLNodeExerciser.cpp(45) : error C2660: 'load' : function does not take 2 parameters S>C:\Program Files\Microsoft Visual Studio\MyProjects\XMLParser\XMLNodeExerciser.cpp(56) : error C2660: 'selectSingleNode' : function does not take 2 parameters S>C:\Program Files\Microsoft Visual Studio\MyProjects\XMLParser\XMLNodeExerciser.cpp(66) : error C2660: 'createNode' : function does not take 4 parameters S>C:\Program Files\Microsoft Visual Studio\MyProjects\XMLParser\XMLNodeExerciser.cpp(75) : error C2660: 'appendChild' : function does not take 2 parameters S>C:\Program Files\Microsoft Visual Studio\MyProjects\XMLParser\XMLNodeExerciser.cpp(85) : error C2664: 'setAttribute' : cannot convert parameter 1 from 'class ATL::CComBSTR' to 'class _bstr_t' S> No constructor could take the source type, or constructor overload resolution was ambiguous S>C:\Program Files\Microsoft Visual Studio\MyProjects\XMLParser\XMLNodeExerciser.cpp(95) : error C2660: 'selectSingleNode' : function does not take 2 parameters S>Error executing cl.exe.
S>XMLNodeExerciser.exe — 6 error(s), 0 warning(s)
Правильно она ругается. Дело в том, что #import оборачивает все методы особым образом: если параметр объявлен как out(**), то она делает его возвращаемым значением. На примере:
Без импорта: