Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > C++ Builder
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 10.06.2014, 16:10   #1
Игорь198
Пользователь
 
Регистрация: 27.05.2014
Сообщений: 13
По умолчанию XMLDocument

друзья помогите разобрать xml файл,
вот часть файла
Цитата:
<DiamantName>
<Ustavki NumberGroupUst="4" SizeGroupUst="1008">
<Protect NumberProtect="1" Name="KOHTP.BPEM.BBOДA AУ ">
<Parameters>
<B Name="KOHTP.BPEM.BBOДA AУ " Razm=" " Type="7" Byte_Before="0" Byte_After="0" Addr="0" Choose1="BBEДEHO" Choose2="BЫBEДEHO " Choose3=" "/>
</Parameters>
</Protect>
<Protect NumberProtect="2" Name="ДЗ MФ - 1 CTУПEHb ">
<Parameters>
<B Name="ДЗ MФ - 1 CTУПEHb " Razm=" " Type="7" Byte_Before="0" Byte_After="0" Addr="6" Choose1="BKЛ " Choose2="OTKЛ " Choose3=" "/>
сам разбор и
Код:
IXMLNode *nodRoot, *nodParameters, *nodProtect,*nodUstavki, *node, *nodeArg;
int nodCnt=0;
unsigned short DefenceCount,UstavkiCount;
_di_IXMLDocument  XMLDocument= NewXMLDocument();
XMLDocument->LoadFromFile(FileName);
  try
   {
         nodRoot=XMLDocument->DocumentElement;
         nodParameters=nodRoot->ChildNodes->FindNode("Ustavki");
         nodCnt=nodRoot->ChildNodes->GetCount();

         Kol_ust = nodParameters->GetAttribute("NumberGroupUst");
         Size_gust = nodParameters->GetAttribute("SizeGroupUst");

         nodProtect = nodParameters->ChildNodes->FindNode("Protect");
         DefenceCount=nodProtect->ChildNodes->GetCount();
         for (int k=0;k<DefenceCount;k++)
         {
            HeaderData= new UstavkiHeader(k);
            node = nodProtect->ChildNodes->Nodes[k];

            HeaderData->NumberProtect = node->GetAttribute("NumberProtect");
            HeaderData->NameHeader = node->GetAttribute("Name");   //
            HeaderList->Add((void*)HeaderData);

            nodUstavki = nodProtect->ChildNodes->FindNode("Parameters");
            UstavkiCount=nodUstavki->ChildNodes->GetCount();
            for (int v=0;v<UstavkiCount;v++)
            {
            UstData = new UstavkiStructure(k,v);
            nodeArg = nodUstavki->ChildNodes->FindNode("B");
            nodeArg = nodUstavki->ChildNodes->Nodes[v];
            UstData->name = nodeArg->GetAttribute("Name");
            UstData->razm = nodeArg->GetAttribute("Razm");
            UstData->type = nodeArg->GetAttribute("Type");
            UstData->byte_before = nodeArg->GetAttribute("Byte_Before");
            UstData->byte_after = nodeArg->GetAttribute("Byte_After");
            UstData->addr = nodeArg->GetAttribute("Addr");
            UstData->choose1 = nodeArg->GetAttribute("Choose1");
            UstData->choose2 = nodeArg->GetAttribute("Choose2");
            UstData->choose3 = nodeArg->GetAttribute("Choose3");
            UstavkiParam->Add((void*)UstData);
            }
         }
   }
  catch(Exception& e){
  }
}
ваши предложения
Меня интересует как мне вытащить значения каждого Protect так как берет только 1 и все, а как дальше и вложенный в нем Parameter ну что то никак

Последний раз редактировалось Stilet; 10.06.2014 в 17:00.
Игорь198 вне форума
Старый 11.06.2014, 08:42   #2
Игорь198
Пользователь
 
Регистрация: 27.05.2014
Сообщений: 13
По умолчанию Решение

Неужели никто не знает как зациклить проход по подузлам, плохо
Игорь198 вне форума
Старый 11.06.2014, 09:19   #3
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,515
По умолчанию

работай с DOM моделью
Код:
doc: IXMLDomDocument;
elm: IXMLDomElement;
list: IXMLDomNodeList;

doc->LoadXMLDocument(....);
elm =doc->DocumentElement;
list = elm->SelectNodes("//Protect");
countprotect =list->Count;
Цитата:
как зациклить проход по подузлам,
или же ixmlnode.nextsibling
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума
Старый 11.06.2014, 09:35   #4
Игорь198
Пользователь
 
Регистрация: 27.05.2014
Сообщений: 13
По умолчанию

Слава богу я считал все Protect, но теперь не могу считать вложенный подузел Parameters/
Игорь198 вне форума
Старый 11.06.2014, 10:19   #5
Игорь198
Пользователь
 
Регистрация: 27.05.2014
Сообщений: 13
По умолчанию узлы

Ок кто подскажит где мне вставить проход на следующий подузел nextsibling;
Игорь198 вне форума
Старый 11.06.2014, 12:03   #6
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,515
По умолчанию

Цитата:
где мне вставить проход на следующий подузел nextsibling;
там где закончил работу с текущим узлом и хочешь перейти к другому узлу того же уровня.
*nodParameters, *nodProtect

Код:
nodparameters =nodparameters->nextSibiling
< вернуться к обработке> <если он есть>
nodprotect =nodprotect->Nextsibiling
<вернуться к обработке> <если он есть>
NextSibiling будет хорошо работать если на уровне нет узлов другого типа
Код:
<LIST>
<PROTECT>  </PROTECT>
<OPEN> узел "другого"  типа на том же уровне </OPEN> 
<PROTECT> </PROTECT>
</LIST>
если они есть (см. пример выше) придется добавлять проверку и пропускать.
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума
Старый 11.06.2014, 14:17   #7
Игорь198
Пользователь
 
Регистрация: 27.05.2014
Сообщений: 13
По умолчанию

АДМИН как темку удалить, плодить мусор не стоит
Игорь198 вне форума
Старый 11.06.2014, 14:37   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Не надо удалять. Тема закрыта.
I'm learning to live...
Stilet вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Компонент xmldocument Liones Компоненты Delphi 2 26.07.2011 21:19
XmlDocument и теги MAcK Общие вопросы Delphi 2 20.10.2010 12:12
XMLDocument Miningo Общие вопросы Delphi 3 07.08.2009 14:59
XMLDocument AidarBik Общие вопросы Delphi 19 18.02.2009 21:41
XMLDocument Sanek777 Общие вопросы Delphi 2 04.11.2008 16:15