Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> XML delphi, вытащить нужную информацию 
:(
    Опции темы
golfV
Дата 1.12.2009, 13:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 199
Регистрация: 4.11.2007

Репутация: нет
Всего: 1



Всем привет!

никак немогу разобраться с XML, надо из XML файла вытащить нужую инфу
Код

<root>
  <MEASDATA>STD</MEASDATA> 
  <STN>397</STN> 
  <TYPE>Syborg6R11F,99</TYPE> 
  <DUT>TR42937263,HRY 901 06/1,R1B</DUT> 
  <PROG>SMU Funtion Test,CAL 105 2041,R3</PROG> 
  <CRITERIA>3/15243-HRY 901 06/1,E,2004-11-18</CRITERIA> 
  <RESULT>ERROR</RESULT> 
  <START>2007-06-22 09:50:29</START> 
  <STOP>2007-06-22 13:03:00</STOP> 
  <OPER>111111</OPER> 
  <DUTNOTE>Error:85:Scan From String (arg 1) in F_Osc-GetOscilloscopeType.vi->G_PPR-PreRun+</DUTNOTE> 
  <END /> 
  </root>

надо вытащить эту строчку  <DUT>TR42937263,HRY 901 06/1,R1B</DUT> и занеси эти 3 знечения  в разные переменные,
некак неполучается хотя бы вытщить эту строчку. Использую IXMLDocument. Подскажите как это сделать?

Это сообщение отредактировал(а) golfV - 1.12.2009, 13:17
PM MAIL   Вверх
golfV
Дата 3.12.2009, 16:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 199
Регистрация: 4.11.2007

Репутация: нет
Всего: 1



Неужели нельзя вытащить эту информацию? 
PM MAIL   Вверх
Dom
Дата 3.12.2009, 23:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 121
Регистрация: 7.8.2005

Репутация: 1
Всего: 4



Ну например что-то вроде такого может поможет
XMLDoc.DocumentElement.ChildNodes.Nodes['DUT'].NodeValue;
или
XMLDoc.DocumentElement.ChildValues['DUT'];
на счет второго вариант не вполне уверен

В хелпе все достаточно подробно должно быть описано насколько я помню.
PM MAIL   Вверх
golfV
Дата 4.12.2009, 09:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 199
Регистрация: 4.11.2007

Репутация: нет
Всего: 1



Да я в принципи так и делаю
Код

var XMLDoc: IXMLDocument;

begin
  XMLDoc := TXMLDocument.Create(nil);
  XMLDoc.LoadFromFile('C:\test.xml');
  XMLDoc.DocumentElement.ChildNodes.Nodes['DUT'].NodeValue;


ошибок не выдает, только вот как этот результат куда нибудь в переменую записать или в ListBox вывести? 

Это сообщение отредактировал(а) golfV - 4.12.2009, 09:54
PM MAIL   Вверх
golfV
Дата 4.12.2009, 11:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 199
Регистрация: 4.11.2007

Репутация: нет
Всего: 1



кое в чем разобрался сделал вот так
Код

 XMLDoc := TXMLDocument.Create(nil);
  XMLDoc.LoadFromFile('C:\test.xml');
  XMLDoc.Active := true ;
  Node := XMLDoc.DocumentElement.ChildNodes[0];
  ListBox1.Items.Add(Node.ChildNodes[0].Text);

выводит "STD",  вот как сделать чтоб он по всему файлу пробежался и вытащил информацию некак немогу разобраться
если ставлю так
Код

Node := XMLDoc.DocumentElement.ChildNodes[1];
  ListBox1.Items.Add(Node.ChildNodes[1].Text);

то выдает ошибку, подскажите как вытащить всю инфу?
PM MAIL   Вверх
Dom
Дата 4.12.2009, 12:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 121
Регистрация: 7.8.2005

Репутация: 1
Всего: 4



Код

Node := XMLDoc.DocumentElement.ChildNodes[0];
  ListBox1.Items.Add(Node.ChildNodes[1].Text);


А если так? Должно выдать 397.
Кажется вспоминаю как работать со стандартным парсером.
XMLDoc.DocumentElement.ChildNodes[0] указывает на первый узел в документе - это root. А вот его дочерние узлы это уже MEASDATA, STN и т.д.
Т.е. при обращении Node := XMLDoc.DocumentElement.ChildNodes[1] должно выдавать ошибку т.к. этот узел не существует в документе (узлов на одном уровне с root нет).
PM MAIL   Вверх
golfV
Дата 4.12.2009, 12:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 199
Регистрация: 4.11.2007

Репутация: нет
Всего: 1



разобрался надо было чтоб вытащить 397 сделать так
Код

Node := XMLDoc.DocumentElement.ChildNodes[1];
ListBox1.Items.Add(Node.ChildNodes[0].Text);

а вот как сделать чтоб цыклом по файлу пробежаться вот некак немогу догадаться?
PM MAIL   Вверх
Dom
Дата 5.12.2009, 07:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 121
Регистрация: 7.8.2005

Репутация: 1
Всего: 4



Код

    for i := 0 to XML.DocumentElement.ChildNodes.Count - 1 do
      Memo1.Lines.Add(XML.DocumentElement.ChildNodes[i].NodeValue);


Только на последнем узле код выдаст ошибку, т.к. узел <END /> в приведенном фрагменте хмл пустой.
PM MAIL   Вверх
golfV
Дата 7.12.2009, 09:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 199
Регистрация: 4.11.2007

Репутация: нет
Всего: 1



Спасибо, буду разбираться
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0720 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.