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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.12.2011, 02:50   #1
Afftar
Пользователь
 
Регистрация: 02.06.2009
Сообщений: 30
По умолчанию Парсинг XML с удаленного сайта

Здравствуйте, есть у меня XML-файл вида:

Код HTML:
<information>
<notes ntext="aaa1" nurl="aaa2"/>
<notes ntext="bbb1" nurl="bbb2"/>
</information>
Разбираю его таким кодом:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
channel:tcaption;
begin
XMLDocument1.LoadFromFile('http://site.ru/file.xml');
XMLDocument1.Active := true;

memo1.Lines.Add(VarToStr(XMLDocument1.DocumentElement.ChildNodes['notes'].Attributes['ntext']));
memo1.Lines.Add(VarToStr(XMLDocument1.DocumentElement.ChildNodes['notes'].Attributes['nurl']));
XMLDocument1.Active := false;
end;
Отлично получаю значения, но не могу задать цикл, который бы вывел мне значения 1,2..n строчки файла.
Afftar вне форума Ответить с цитированием
Старый 28.12.2011, 11:21   #2
Mifody
Заблокирован
 
Регистрация: 12.02.2009
Сообщений: 215
По умолчанию

Код:
XMLDocument1.DocumentElement.ChildNodes.Count
Не? я правда NativeXML пользую, так что правильность не гарантирую
Mifody вне форума Ответить с цитированием
Старый 28.12.2011, 14:16   #3
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,434
По умолчанию

Нативным XML'ом проще будет во много раз =)

Код:
var
  XML:TnativeXML;
  i:Integer;
begin
  XML:=TNativeXML.CreateName('information');
  try
  XML.LoadFromUrl('http://site.ru/file.xml');
  for i:=0 to XML.Root.NodeCount -1 do
  begin
     with XML.Root.Nodes[i] do
     begin
     Memo1.Lines.add(ReadStringAttribute('ntext')+'  '+ReadStringAttribute('nurl'));
     end;
  end;
  finally
    FreeAndNil(XML);
   end;
end;
Человек_Борща вне форума Ответить с цитированием
Старый 31.12.2011, 05:18   #4
Afftar
Пользователь
 
Регистрация: 02.06.2009
Сообщений: 30
По умолчанию

Спасибо, начал использовать эту библиотеку, но проблема с загрузкой из интернета, с локального компьютера грузит на ура.
И еще, как убрать пустые строки впереди и после каждого элемента?

Последний раз редактировалось Afftar; 31.12.2011 в 05:47.
Afftar вне форума Ответить с цитированием
Старый 02.01.2012, 23:03   #5
Afftar
Пользователь
 
Регистрация: 02.06.2009
Сообщений: 30
По умолчанию

АП.
Как же бороться с пустыми строками?
У меня есть 8 элементов, но если вывести
Код:
XML.Root.NodeCount
- пишет, что 17. Соответственно делает 17 записей в Memo, и между элементами пустые строки.
Afftar вне форума Ответить с цитированием
Старый 04.01.2012, 15:48   #6
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,434
По умолчанию

Тримируйте строки. Функция Trim
Человек_Борща вне форума Ответить с цитированием
Старый 04.01.2012, 17:58   #7
Afftar
Пользователь
 
Регистрация: 02.06.2009
Сообщений: 30
По умолчанию

А где собственно ее использовать, используя код предоставленный выше?
При записи в memo?
Код:
Memo1.Lines.add(Trim(ReadStringAttribute('ntext'));
та же песня..
Afftar вне форума Ответить с цитированием
Старый 04.01.2012, 18:35   #8
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,434
По умолчанию

Дайте ваш XML.
Человек_Борща вне форума Ответить с цитированием
Старый 04.01.2012, 18:46   #9
Afftar
Пользователь
 
Регистрация: 02.06.2009
Сообщений: 30
По умолчанию

Идентичен XML из первого поста:

Код:
<information>
<notes ntext="aaa1" nurl="aaa2"/>
<notes ntext="bbb1" nurl="bbb2"/>
<notes ntext="aaa1" nurl="aaa2"/>
<notes ntext="bbb1" nurl="bbb2"/>
</information>
Afftar вне форума Ответить с цитированием
Старый 04.01.2012, 19:44   #10
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,434
По умолчанию

Код разбора я уже приводил.
Меня смущает, что нет шапки XML. Или это кусок файла?
Человек_Борща вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Парсинг XML Aleskandr PHP 1 24.08.2011 14:32
Парсинг XML. Abuhamed PHP 1 01.06.2011 22:24
Парсинг xml file Jakethefish C# (си шарп) 2 17.04.2011 14:31
Парсинг XML страницы record222 Общие вопросы Delphi 3 06.04.2010 18:07
Парсинг XML [Smarik] Общие вопросы Delphi 6 13.03.2010 17:38