Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: XML в Windows C++  (Прочитано 28332 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии

il
Offline Offline
Пол: Мужской
Бодрый птах


« : 16-07-2005 14:58 » 

Хотелось бы уточнить следующее...
Какие уже готовые элементы в 2003 студии есть дабы создавать и парсить XML файлы...

Вот пример использования который мне нужен:

1. Есть некий абстрактный объект конфигурации который загружается.
2. Вся конфигурация сохраняемая.

Нужно создать и читать файл конфигурации в программе. Структура файла динамична. Нестандартна для Винды.


Ранее для этого использовал ini файл теперь нехватает ...
Записан

А птичку нашу прошу не обижать!!!
xelos
Гость
« Ответ #1 : 17-07-2005 07:40 » 

если .NET пользуешь - то там все есть. И для создания файлов со своей структурой и и парсит все автоматически - на выходе из XML файла готовую структуру данных получаешь.

под Win32 нет, вроде стандартных библиотек.

Если  на С# надо примерчик - завтра с работы кину.
Записан
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии

il
Offline Offline
Пол: Мужской
Бодрый птах


« Ответ #2 : 17-07-2005 09:14 » 

xelos - тут така закавыка.
Пишу в студии НЕТ 2003 энтерпрайз.
Но не пишу в проекте точка нет. Сделал МФС аппликашку, которая не будет зависить от фрейм нетворкс.

Причина проста.
1. Программа работает с железом - и должна будет иметь кучу вариантов с драйверами и уметь к ним подключаться.  ИМХО - то что я слышал о точке нет, меня не радует. В этом смысле мне очень важно иметь под рукой С++.

2. Необходим динамический просмотр и вызов длл библиотек, при этом с динамическим же вызовом разноименных функций по адресу, ИМХО я не вижу необходимости в фремнетворке для таких штук.

3. Работа с ГУИ И ХМЛ можно и не трогать, а сделать подручными средствами или вообще разработать свой парсер для конфигурационных файлов.
Например используя те же ини файлы. Мне попросту немного тяжко и лениво писать многоуровневый менеджмент конфигурации под ИНИ файлы, получается, что для программы и так много чего надо писать, а тут еще вешаетсяы глупость такая.


Напишу суть задачки, коротко, а там мож кто посоветует чего путного.


Итак:
Е вдаваясь в подробности зачем треба:
1. Красивый ГУИ. Тест билиотеки с платного сервиса проходит пока успешно. Пока не вижу ничего страшного - пробую разбираюсь, но вывод прост - вопрос с ГУИ вроде бы решен положительно. Будет нужный красивый вид по типу той же студии.

2. Есть структура проектов. Т.е. в качестве данных для работы выступает проект.
В двух видах - проет билт ин работ, на основании которых строится другой проет, либо кастом. Кастом в данном проектном случае состоит из различных подключений либо из юилт ин проекта, либо из собтсвенных кастомных разработок, которые до этого были зарегистрированы как кастом дата.

3. Кроме настроек проекта как такового, для его вполнения будет использоваться скриптовый язык, базовые куски которого будут создаваться визардами в момент работы с созданием проекта в части ответственной за запуск, а во втором случае - будет возможность редактироваь все это вручную.

Естественно - при таком уровне сложности следующее - работа с конфигурацией и т.п., что можно и нужно стандартизовать, хочется для легкости перенести в удобный вид типа хмл.
Это даст
а) относительную уверенность в том, что при развитии технологии программу не придетс переделывать сильно, ХМЛ вполне доступная вещь.
б) Код и содержимое на этапе разработки можно видеть и контролировать визуально.
в) работа с изменением формата будет не тяжела, достаточно будет просто добавить тип данных для парсера, а остальное будет само собой отрабатывать.


И поэтому возник вопрос, как в обычной не завязанной на популярных майкрософтовских заморочках типа фреймворка, точки нет и С - гарпа, отрабатывать работу с ХМЛ файлом как мне надо.?

Записан

А птичку нашу прошу не обижать!!!
s_n
Постоялец

ru
Offline Offline

« Ответ #3 : 18-07-2005 07:02 » 

А чем msxml не устраивает?
Записан
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии

il
Offline Offline
Пол: Мужской
Бодрый птах


« Ответ #4 : 18-07-2005 07:05 » 

А чего это??? И как к нему обратится из МФС проги??
Записан

А птичку нашу прошу не обижать!!!
s_n
Постоялец

ru
Offline Offline

« Ответ #5 : 18-07-2005 07:15 » 

Да стандартный MS парсер, обращаться через ком. Классовая обертка есть здесь: http://www.codeproject.com/cpp/C___XML_wrapper.asp
Записан
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии

il
Offline Offline
Пол: Мужской
Бодрый птах


« Ответ #6 : 18-07-2005 07:54 » 

Не чужую мне оболочку не надь - ты лучше покаж как АПИ вызывает нужный ком.
Код в студию - пример...! Улыбаюсь
Записан

А птичку нашу прошу не обижать!!!
s_n
Постоялец

ru
Offline Offline

« Ответ #7 : 18-07-2005 08:06 » 

Создаем msxml4.tlh:
  #import "msxml4.dll"  named_guids raw_interfaces_only
  using namespace MSXML2;

Инициализируеш ком:
  HRESULT hr;
  hr = CoInitialize(NULL); 

Создаешь экземпляр и работаеш с ним:
  IXMLDOMDocument * pXMLDoc;
  hr = CoCreateInstance(CLSID_DOMDocument, NULL, CLSCTX_INPROC_SERVER, IID_IXMLDOMDocument, (void**)&pXMLDoc);
  IXMLDOMNodeList *nl;
  IXMLDOMNode * pXDN;

  _variant_t varXml("c:\\1.xml");
  VARIANT_BOOL varOut;
  if (FAILED(pXMLDoc->load(varXml,&varOut))) MessageBox("Error Loading c:\\1.xml","Error",MB_OK);
  pXMLDoc->get_childNodes(&nl);

Или не то?
Записан
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии

il
Offline Offline
Пол: Мужской
Бодрый птах


« Ответ #8 : 18-07-2005 08:17 » 

Не видит...
Где инклуд к нему ...
Код:
:\Documents and Settings\alexanderm\My Documents\myproject\xmlparse\xmlparseDlg.cpp(180) : error C2065: 'IXMLDOMDocument' : undeclared identifier
C:\Documents and Settings\alexanderm\My Documents\myproject\xmlparse\xmlparseDlg.cpp(180) : error C2065: 'pXMLDoc' : undeclared identifier
C:\Documents and Settings\alexanderm\My Documents\myproject\xmlparse\xmlparseDlg.cpp(180) : warning C4552: '*' : operator has no effect; expected operator with side-effect
C:\Documents and Settings\alexanderm\My Documents\myproject\xmlparse\xmlparseDlg.cpp(181) : error C2065: 'CLSID_DOMDocument' : undeclared identifier
C:\Documents and Settings\alexanderm\My Documents\myproject\xmlparse\xmlparseDlg.cpp(181) : error C2065: 'IID_IXMLDOMDocument' : undeclared identifier
C:\Documents and Settings\alexanderm\My Documents\myproject\xmlparse\xmlparseDlg.cpp(182) : error C2065: 'IXMLDOMNodeList' : undeclared identifier
C:\Documents and Settings\alexanderm\My Documents\myproject\xmlparse\xmlparseDlg.cpp(182) : error C2065: 'nl' : undeclared identifier
C:\Documents and Settings\alexanderm\My Documents\myproject\xmlparse\xmlparseDlg.cpp(182) : warning C4552: '*' : operator has no effect; expected operator with side-effect
C:\Documents and Settings\alexanderm\My Documents\myproject\xmlparse\xmlparseDlg.cpp(183) : error C2065: 'IXMLDOMNode' : undeclared identifier
C:\Documents and Settings\alexanderm\My Documents\myproject\xmlparse\xmlparseDlg.cpp(183) : error C2065: 'pXDN' : undeclared identifier
C:\Documents and Settings\alexanderm\My Documents\myproject\xmlparse\xmlparseDlg.cpp(183) : warning C4552: '*' : operator has no effect; expected operator with side-effect
C:\Documents and Settings\alexanderm\My Documents\myproject\xmlparse\xmlparseDlg.cpp(185) : error C2065: '_variant_t' : undeclared identifier
C:\Documents and Settings\alexanderm\My Documents\myproject\xmlparse\xmlparseDlg.cpp(185) : error C2146: syntax error : missing ';' before identifier 'varXml'
C:\Documents and Settings\alexanderm\My Documents\myproject\xmlparse\xmlparseDlg.cpp(185) : error C2065: 'varXml' : undeclared identifier
C:\Documents and Settings\alexanderm\My Documents\myproject\xmlparse\xmlparseDlg.cpp(187) : error C2227: left of '->load' must point to class/struct/union
C:\Documents and Settings\alexanderm\My Documents\myproject\xmlparse\xmlparseDlg.cpp(188) : error C2227: left of '->get_childNodes' must point to class/struct/union
Generating Code...
Error executing cl.exe.
Creating browse info file...
« Последнее редактирование: 03-12-2007 20:22 от Алексей1153++ » Записан

А птичку нашу прошу не обижать!!!
s_n
Постоялец

ru
Offline Offline

« Ответ #9 : 18-07-2005 08:26 » 

Хм. msxml4.dll в системе есть?
msxml4.tlh файл в папке проекта создался?

попробуй поставить msxml sdk
Записан
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии

il
Offline Offline
Пол: Мужской
Бодрый птах


« Ответ #10 : 18-07-2005 08:30 » 

1. Нашел по странному пути C:/Program Files/MSXML4.0/
Не в студии и я SDK не ставил.
2. Пока не создался - но счас пути поменяю.
3. Посмотрим...
Записан

А птичку нашу прошу не обижать!!!
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии

il
Offline Offline
Пол: Мужской
Бодрый птах


« Ответ #11 : 18-07-2005 08:35 » 

При полностью закрытом коде по инициализации только с импортом нужные файлы создались но по прежнему есть ошибки Жаль
Записан

А птичку нашу прошу не обижать!!!
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии

il
Offline Offline
Пол: Мужской
Бодрый птах


« Ответ #12 : 18-07-2005 08:36 » 

 error C2872: 'IXMLDOMDocument' : ambiguous symbol
C:\Documents and Settings\alexanderm\My Documents\myproject\xmlparse\xmlparseDlg.cpp(195) : error C2872: 'CLSID_DOMDocument2' : ambiguous symbol
C:\Documents and Settings\alexanderm\My Documents\myproject\xmlparse\xmlparseDlg.cpp(195) : error C2872: 'IID_IXMLDOMDocument' : ambiguous symbol
C:\Documents and Settings\alexanderm\My Documents\myproject\xmlparse\xmlparseDlg.cpp(196) : error C2872: 'IXMLDOMNodeList' : ambiguous symbol
C:\Documents and Settings\alexanderm\My Documents\myproject\xmlparse\xmlparseDlg.cpp(197) : error C2872: 'IXMLDOMNode' : ambiguous symbol
« Последнее редактирование: 03-12-2007 20:25 от Алексей1153++ » Записан

А птичку нашу прошу не обижать!!!
s_n
Постоялец

ru
Offline Offline

« Ответ #13 : 18-07-2005 08:43 » 

Слушай, вот кусок старого кода, именно на нем я разбирался, сейчас откомпилировал с нуля - запустился. Попробуй.

* sample.rar (33.64 Кб - загружено 2793 раз.)
Записан
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии

il
Offline Offline
Пол: Мужской
Бодрый птах


« Ответ #14 : 18-07-2005 09:09 » 

Спасибки - а то ни один пример от майкрософта не работает Улыбаюсь
Записан

А птичку нашу прошу не обижать!!!
MOPO3
Ай да дэдушка! Вах...
Команда клуба

lt
Offline Offline
Пол: Мужской
Холадна аднака!


WWW
« Ответ #15 : 18-07-2005 10:37 » 

Спасибки - а то ни один пример от майкрософта не работает Улыбаюсь
К сожалению так случается СЛИШКОМ часто Жаль
Записан

MCP, MCAD, MCTS:Win, MCTS:Web
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии

il
Offline Offline
Пол: Мужской
Бодрый птах


« Ответ #16 : 18-07-2005 10:57 » 

Присланный пример падает при нажатии на кнопку по неправильному адресу доступа, чего то там не хватает...
Записан

А птичку нашу прошу не обижать!!!
s_n
Постоялец

ru
Offline Offline

« Ответ #17 : 18-07-2005 11:29 » 

Попробуй создать файл "с:\1.xml" следующего содержания:

Код:
<?xml version="1.0" encoding="Windows-1251"?>
 <dataset>
  <block name="block1" id="block1">
   <item>
    <id>a1</id>
    <name>b1</name>
    <type>c1</type>
    <dimension>d1</dimension>
   </item>
   <item>
    <id>a2</id>
    <name>b2</name>
    <type>c2</type>
    <dimension>d2</dimension>
   </item>
  </block>
  <block name="block2" id="block2">
   <item>
    <id>a1</id>
    <name>b1</name>
    <type>c1</type>
    <dimension>d1</dimension>
   </item>
   <item>
    <id>a2</id>
    <name>b2</name>
    <type>c2</type>
    <dimension>d2</dimension>
   </item>
  </block>

  <apparat name="asdf" id="dfdf">
   <useblock>block1</useblock>
   <useblock>block2</useblock>
  </apparat>

 </dataset>

Записан
Psyton
Гость
« Ответ #18 : 09-08-2005 08:26 » 

Насколько я помню, MSXML жрет довольно много ресурсов. Я например пользую OpenSource библиотеку Expat и очень рад этому.
Записан
Anchorite
Гость
« Ответ #19 : 09-08-2005 17:08 » 

Можно заглянуть на http://xml.apache.org/
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #20 : 18-04-2006 20:55 » new

(комент)

аналогично - тоже не знаю, что делать с темой. Огромная, но так и не пришли ни к чему
Записан

Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines