Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
1 / 1 / 0
Регистрация: 17.12.2011
Сообщений: 29

Пример чтения данных из XML-файла

18.12.2011, 03:41. Показов 3776. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет.
Хотелось бы увидеть небольшой пример на Visual C++ 6 с использованием данных из XML-файла (желательно msxml).
К примеру: имеется некий файл Hello.xml

Code
1
2
3
4
<?xml version="1.0" encoding="UTF-8"?>
<ROOT>
  <HELLO>Привет, народ!</HELLO>
</ROOT>

Как мне в нём получить строку из тега HELLO? Документации - горы, но реального примерчика - как не было так и нет(((
П.С. Любители гугла, знатоки мест нахождения документов и просто тролли - лесом

Добавлено через 1 час 39 минут
Код почему-то выдает ошибки

Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#include <iostream.h>
#include <msxml.h>
#include <conio.h>
 
void main()
{
    // инициализация COM
    CoInitialize(NULL);
 
    // создаём XML-парсер
    CComPtr<IXMLDOMDocument> spXMLDOM;
    HRESULT hr = spXMLDOM.CoCreateInstance(__uuidof(DOMDocument));
 
    if ( FAILED(hr) )
        throw "Unable to create XML parser object";
    if ( spXMLDOM.p == NULL )
        throw "Unable to create XML parser object";
 
    // загружаем XML-документ
    VARIANT_BOOL bSuccess = false;
    hr = spXMLDOM->load(CComVariant(L"Hello.xml"), &bSuccess);
 
    if ( FAILED(hr) )
        throw "Unable to load XML document into the parser";
    if ( !bSuccess )
        throw "Unable to load XML document into the parser";
 
    // ищем XML-ноду
    CComBSTR bstrSS(L"ROOT/HELLO");
    CComPtr<IXMLDOMNode> spXMLNode;
    hr = spXMLDOM->selectSingleNode(bstrSS,&spXMLNode);
 
    if ( FAILED(hr) )
        throw "Unable to locate 'HELLO' XML node";
    if ( spXMLNode.p == NULL )
        throw "Unable to locate 'HELLO' XML node";
 
    CComVariant varValue(VT_EMPTY); // сюда будем читать
    hr = spXMLNode->get_nodeTypedValue(&varValue); // читаем
    if ( FAILED(hr) ) // нет ошибки?
        throw "Unable to retrieve 'HELLO' text";
 
    if ( varValue.vt == VT_BSTR ) // там строка?
    {
        // конвертируем полученную строку из BSTR в ANSI
        USES_CONVERSION;
        LPTSTR lpstrMsg = W2T(varValue.bstrVal);
        std::cout << lpstrMsg << std::endl;
    }
    else
    {
        // произошла ошибка
        throw "Unable to retrieve 'HELLO' text";
    }
}
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
--------------------Configuration: forschung1 - Win32 Debug--------------------
Compiling...
forschung1.cpp
D:\Documents and Settings\Administrator\Desktop\cpptest\forschung1\forschung1.cpp(11) : error C2065: 'CComPtr' : undeclared identifier
D:\Documents and Settings\Administrator\Desktop\cpptest\forschung1\forschung1.cpp(11) : error C2065: 'IXMLDOMDocument' : undeclared identifier
D:\Documents and Settings\Administrator\Desktop\cpptest\forschung1\forschung1.cpp(11) : error C2065: 'spXMLDOM' : undeclared identifier
D:\Documents and Settings\Administrator\Desktop\cpptest\forschung1\forschung1.cpp(11) : warning C4804: '>' : unsafe use of type 'bool' in operation
D:\Documents and Settings\Administrator\Desktop\cpptest\forschung1\forschung1.cpp(11) : warning C4552: '>' : operator has no effect; expected operator with side-effect
D:\Documents and Settings\Administrator\Desktop\cpptest\forschung1\forschung1.cpp(12) : error C2228: left of '.CoCreateInstance' must have class/struct/union type
D:\Documents and Settings\Administrator\Desktop\cpptest\forschung1\forschung1.cpp(12) : error C2065: 'DOMDocument' : undeclared identifier
D:\Documents and Settings\Administrator\Desktop\cpptest\forschung1\forschung1.cpp(16) : error C2228: left of '.p' must have class/struct/union type
D:\Documents and Settings\Administrator\Desktop\cpptest\forschung1\forschung1.cpp(21) : error C2227: left of '->load' must point to class/struct/union
D:\Documents and Settings\Administrator\Desktop\cpptest\forschung1\forschung1.cpp(21) : error C2065: 'CComVariant' : undeclared identifier
D:\Documents and Settings\Administrator\Desktop\cpptest\forschung1\forschung1.cpp(29) : error C2065: 'CComBSTR' : undeclared identifier
D:\Documents and Settings\Administrator\Desktop\cpptest\forschung1\forschung1.cpp(29) : error C2146: syntax error : missing ';' before identifier 'bstrSS'
D:\Documents and Settings\Administrator\Desktop\cpptest\forschung1\forschung1.cpp(29) : error C2065: 'bstrSS' : undeclared identifier
D:\Documents and Settings\Administrator\Desktop\cpptest\forschung1\forschung1.cpp(30) : error C2065: 'IXMLDOMNode' : undeclared identifier
D:\Documents and Settings\Administrator\Desktop\cpptest\forschung1\forschung1.cpp(30) : error C2065: 'spXMLNode' : undeclared identifier
D:\Documents and Settings\Administrator\Desktop\cpptest\forschung1\forschung1.cpp(30) : warning C4804: '>' : unsafe use of type 'bool' in operation
D:\Documents and Settings\Administrator\Desktop\cpptest\forschung1\forschung1.cpp(30) : warning C4552: '>' : operator has no effect; expected operator with side-effect
D:\Documents and Settings\Administrator\Desktop\cpptest\forschung1\forschung1.cpp(31) : error C2227: left of '->selectSingleNode' must point to class/struct/union
D:\Documents and Settings\Administrator\Desktop\cpptest\forschung1\forschung1.cpp(35) : error C2228: left of '.p' must have class/struct/union type
D:\Documents and Settings\Administrator\Desktop\cpptest\forschung1\forschung1.cpp(38) : error C2146: syntax error : missing ';' before identifier 'varValue'
D:\Documents and Settings\Administrator\Desktop\cpptest\forschung1\forschung1.cpp(38) : error C2065: 'varValue' : undeclared identifier
D:\Documents and Settings\Administrator\Desktop\cpptest\forschung1\forschung1.cpp(39) : error C2227: left of '->get_nodeTypedValue' must point to class/struct/union
D:\Documents and Settings\Administrator\Desktop\cpptest\forschung1\forschung1.cpp(43) : error C2228: left of '.vt' must have class/struct/union type
D:\Documents and Settings\Administrator\Desktop\cpptest\forschung1\forschung1.cpp(46) : error C2065: 'USES_CONVERSION' : undeclared identifier
D:\Documents and Settings\Administrator\Desktop\cpptest\forschung1\forschung1.cpp(47) : error C2065: 'W2T' : undeclared identifier
D:\Documents and Settings\Administrator\Desktop\cpptest\forschung1\forschung1.cpp(47) : error C2228: left of '.bstrVal' must have class/struct/union type
D:\Documents and Settings\Administrator\Desktop\cpptest\forschung1\forschung1.cpp(47) : error C2440: 'initializing' : cannot convert from 'int' to 'char *'
        Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style cast
D:\Documents and Settings\Administrator\Desktop\cpptest\forschung1\forschung1.cpp(48) : error C2653: 'std' : is not a class or namespace name
D:\Documents and Settings\Administrator\Desktop\cpptest\forschung1\forschung1.cpp(48) : error C2653: 'std' : is not a class or namespace name
Error executing cl.exe.
 
forschung1.exe - 25 error(s), 4 warning(s)
в чем беда, не подскажите?

Добавлено через 48 минут
Таак, добавил #include "stdafx.h", ошибок заметно поубавилось,
но теперь находит ошибки в msxml.h :wow:

Code
1
2
3
4
5
6
7
Compiling...
forschung1.cpp
d:\program files\microsoft visual studio\vc98\include\msxml.h(26) : error C2146: syntax error : missing ';' before identifier 'IXMLElementCollection'
d:\program files\microsoft visual studio\vc98\include\msxml.h(26) : fatal error C1004: unexpected end of file found
Error executing cl.exe.
 
forschung1.exe - 2 error(s), 0 warning(s)
Добавлено через 1 час 35 минут
Спасибо всем,
плюнул и переписал все на TinyXML.

Вот этот форум решил все проблемы

 Комментарий модератора 
Ссылки на другие форумы запрещены правилами форума!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.12.2011, 03:41
Ответы с готовыми решениями:

Пример чтения xml файла
Хотелось бы пример чтения xml файла на сервере и отображения каждой заглавной секциитэга в виде ссылки в таблице. С уважением,

Пример чтения из файла.
У меня в книжке есть пример чтения из файла, но это приложение. А мне нужен аплет.

пример чтения картинки из файла
Есть пример чтения картинки из файла, но на Delphi. С литературой туго - учусь на разных примерах,и с памятью еще работать не...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.12.2011, 03:41
Помогаю со студенческими работами здесь

Нужен пример алгоритма чтения из файла и записи в файл
Добрый день форумчане. Нужен код простейшей программы, выводящий текст из текстового файла в мемо, и обратно, то-есть: алгоритм чтения...

Реализация чтения данных из XML, на одну форму, если количество таких данных неограниченно
Создание XML-файла с названием Promotion.xml (можно типизированного, с заранее оговоренной структурой, можно использовать XSD-схему),...

Нужен пример кода чтения из файла, сравнение и функция рандом
Нужен пример кода -Открываем файл -Считываем содержимое(будет 4 числа) -Очищаем файл -Записываем в файл 4 случайных числа...

Задать кодировку чтения у xml файла
Такая проблема xml файл в кодировке UTF-7. Читаю его с помощью XmlDocument doc = new XmlDocument(); ...

Функция чтения xml файла с внешнего сайта
Написал скрипт который вытаскивает счётчик фоловеров в твиттере: $twitter='user_name'; $file =...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru