Примеры кода на С для создания/чтения XML-файлов для msxml?
От: VIRT  
Дата: 24.07.03 08:32
Оценка: 1 (1)
Уважаемые форумчане!
Киньте ссылку, пожалуйста, где можно скачать примеры на С/С++
создания/чтения xml-файлов для библиотеки msxml.
Заранее признателен, Владимир.
Re: Примеры кода на С для создания/чтения XML-файлов для msx
От: Odi$$ey Россия http://malgarr.blogspot.com/
Дата: 24.07.03 08:42
Оценка:
Здравствуйте, VIRT, Вы писали:

VIR>Уважаемые форумчане!

VIR>Киньте ссылку, пожалуйста, где можно скачать примеры на С/С++
VIR>создания/чтения xml-файлов для библиотеки msxml.

http://www.rsdn.ru/article/?xml/msxml.xml
Автор(ы): Кен Скрибнер (Kenn Scribner)
Дата: 17.04.2001

В этой статье автор на простом примере демонстрирует применение парсера MSXML для работы с XML-документами (загрузка и сохранение документа, поиск, изменение и добавление узлов, получение и изменение атрибутов). Для работы с MSXML используются средства библиотеки ATL.
Re[2]: Примеры кода на С для создания/чтения XML-файлов для
От: Kont Россия  
Дата: 01.10.03 13:53
Оценка:
Здравствуйте, Odi$$ey, Вы писали:

OE>Здравствуйте, VIRT, Вы писали:


VIR>>Уважаемые форумчане!

VIR>>Киньте ссылку, пожалуйста, где можно скачать примеры на С/С++
VIR>>создания/чтения xml-файлов для библиотеки msxml.

OE>http://www.rsdn.ru/article/?xml/msxml.xml
Автор(ы): Кен Скрибнер (Kenn Scribner)
Дата: 17.04.2001

В этой статье автор на простом примере демонстрирует применение парсера MSXML для работы с XML-документами (загрузка и сохранение документа, поиск, изменение и добавление узлов, получение и изменение атрибутов). Для работы с MSXML используются средства библиотеки ATL.


Немаловажно: по ссылке если сходить, то там ничего о создании XML-файлов, как XML-документов, не сказано. Так что пост был бесполезен (наполовину, на первую). IMHO.
Я вот все чаще думаю:
Все великие люди уже умерли...
Вот и я себя плохо чувствую!
Re[3]: Примеры кода на С для создания/чтения XML-файлов для
От: Odi$$ey Россия http://malgarr.blogspot.com/
Дата: 01.10.03 14:08
Оценка:
Здравствуйте, Kont, Вы писали:

VIR>>>Киньте ссылку, пожалуйста, где можно скачать примеры на С/С++

VIR>>>создания/чтения xml-файлов для библиотеки msxml.

OE>>http://www.rsdn.ru/article/?xml/msxml.xml
Автор(ы): Кен Скрибнер (Kenn Scribner)
Дата: 17.04.2001

В этой статье автор на простом примере демонстрирует применение парсера MSXML для работы с XML-документами (загрузка и сохранение документа, поиск, изменение и добавление узлов, получение и изменение атрибутов). Для работы с MSXML используются средства библиотеки ATL.


K>Немаловажно: по ссылке если сходить, то там ничего о создании XML-файлов, как XML-документов, не сказано. Так что пост был бесполезен (наполовину, на первую). IMHO.


а цепочка spXMLDOM.CoCreateInstance — spXMLDOM->createNode — spXMLNode->appendChild — spXMLDOM->save это не создание XML документа и потом файла? Слова выкусывал прям по-порядку из статьи.
Re[4]: Примеры кода на С для создания/чтения XML-файлов для
От: Kont Россия  
Дата: 02.10.03 11:37
Оценка:
Здравствуйте, Odi$$ey, Вы писали:

OE>а цепочка spXMLDOM.CoCreateInstance — spXMLDOM->createNode — spXMLNode->appendChild — spXMLDOM->save это не создание XML документа и потом файла? Слова выкусывал прям по-порядку из статьи.


А ты сам пробовал по этой цепочке пример создать? У меня не получается! Я прошу немного: работающий пример, в котором создается документ, желательно валидный и записывается на диск.
Я вот все чаще думаю:
Все великие люди уже умерли...
Вот и я себя плохо чувствую!
Re[5]: Примеры кода на С для создания/чтения XML-файлов для
От: Odi$$ey Россия http://malgarr.blogspot.com/
Дата: 02.10.03 13:00
Оценка:
Здравствуйте, Kont, Вы писали:

OE>>а цепочка spXMLDOM.CoCreateInstance — spXMLDOM->createNode — spXMLNode->appendChild — spXMLDOM->save это не создание XML документа и потом файла? Слова выкусывал прям по-порядку из статьи.


K>А ты сам пробовал по этой цепочке пример создать? У меня не получается!


Что конкретно не получается? где код? какие ошибки возвращаются?
Re[5]: Примеры кода на С для создания/чтения XML-файлов для
От: Nikto Россия  
Дата: 03.10.03 05:13
Оценка:
Здравствуйте, Kont, Вы писали:

K>Здравствуйте, Odi$$ey, Вы писали:


OE>>а цепочка spXMLDOM.CoCreateInstance — spXMLDOM->createNode — spXMLNode->appendChild — spXMLDOM->save это не создание XML документа и потом файла? Слова выкусывал прям по-порядку из статьи.


K>А ты сам пробовал по этой цепочке пример создать? У меня не получается! Я прошу немного: работающий пример, в котором создается документ, желательно валидный и записывается на диск.



#import <msxml.dll> rename_namespace("XML")

...

XML::IXMLDOMDocumentPtr       doc(__uuidof(XML::DOMDocument));
doc->loadXML("<root><Some Tag=\"1\" /><Some Tag=\"2\">Hello XML!</Some></root>");
doc->save("coolfile.xml");


Спрашивай конкретнее что у тебя не получилось.
Re[6]: Примеры кода на С для создания/чтения XML-файлов для
От: Sinva Канада  
Дата: 09.10.03 16:11
Оценка:
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-файлов для
От: Nikto Россия  
Дата: 10.10.03 02:41
Оценка:
Здравствуйте, Sinva, Вы писали:



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(**), то она делает его возвращаемым значением. На примере:
Без импорта:
IXMLDOMDocument* pDoc;
...
VARIANT_BOOL b;
pDoc->load("filename.xml",&b);


С импортом:
IXMLDOMDocumentPtr pDoc;
...
VARIANT_BOOL b;
b=pDoc->load("filename.xml");// Тут естественно  можно опустить.


Точно также работаешь с другими функциями...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.