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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.06.2011, 16:48   #1
Ky3Heu,
Пользователь
 
Регистрация: 01.04.2009
Сообщений: 94
По умолчанию Трудности с XML

Есть xml-файл (см. вложенный файл data.zip). Мне нужно из этого файлика считывать параметры "P_ID", по ним я нахожу в БД нужные мне данные и надо подставить их обратно в параметры "R_DATE" и "P_VAL". Структуру исходного файла менять нельзя.. Промучился сегодня весь день, но результат абсолютный нуль. Помогите с кодом и компонентом.
Вложения
Тип файла: zip data.zip (5.2 Кб, 12 просмотров)
По ракетам и хоккею - Россияне всех сильней!
Ky3Heu, вне форума Ответить с цитированием
Старый 07.06.2011, 20:20   #2
maxionans
Форумчанин
 
Аватар для maxionans
 
Регистрация: 02.01.2010
Сообщений: 254
По умолчанию

Ну а в чём трудность? Код свой покажи.
maxionans вне форума Ответить с цитированием
Старый 08.06.2011, 09:11   #3
Ky3Heu,
Пользователь
 
Регистрация: 01.04.2009
Сообщений: 94
По умолчанию

Код:
XMLInput.Active:=True;

for i := 0 to XMLInput.DocumentElement.ChildNodes.Count-1 do
ListBox1.Items.Add(XMLInput.DocumentElement.ChildNodes[i].ChildNodes['P_ID'].text)
Ну и различные модификации пробовал.
Толку нет пока не поменяешь структуру файла, а этого делать нельзя.
По ракетам и хоккею - Россияне всех сильней!
Ky3Heu, вне форума Ответить с цитированием
Старый 08.06.2011, 09:43   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Код:
type TRecord1 = record
        P_ID: String;
        Node: IXMLNode;
     end;
var Node,Node1: IXMLNode;
    xCount: Integer;
    xArray: array of TRecord1;
...
  Node:=XMLDocument.DocumentElement.ChildNodes.FindNode('diffgr:diffgram');
  if Node=nil then Exit;
  Node:=Node.ChildNodes.First;
  if Node=nil then Exit;
  Node:=Node.ChildNodes.FindNode('ParametersData');
  xCount:=0;
  while (Node<>nil) and (Node.NodeName='ParametersData') do begin
    Node1:=Node.ChildNodes.FindNode('P_ID');
    if Node1<>nil then begin
      Inc(xCount);
      SetLength(xArray,xCount);
      xArray[xCount-1].P_ID:=Node1.Text;
      xArray[xCount-1].Node:=Node1;
    end;
    Node:=Node.NextSibling;
  end;
При корректировке XML xArray[i].Node можно использовать для обращения к нужному узлу.
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 08.06.2011, 12:41   #5
Ky3Heu,
Пользователь
 
Регистрация: 01.04.2009
Сообщений: 94
По умолчанию

Спасибки. Даже с записью разобрался.
По ракетам и хоккею - Россияне всех сильней!
Ky3Heu, вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
сформировать xml-файл на основе другого xml-файла NieL Общие вопросы Delphi 2 21.12.2010 15:49
парсер XML, не видит XML тэги supercelt PHP 3 02.11.2009 19:18
Трудности перевода Elidan Общие вопросы C/C++ 0 10.06.2009 01:49
Трудности с формулой arr1val Microsoft Office Excel 1 15.08.2008 17:18
Трудности перевода Maks1978 Свободное общение 6 30.05.2008 12:55