![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Работа с XMLDOCUMENT [D7, WinXP]
Буржуй © (2010-07-22 15:05:00)подгружаю значит описание сайта, адрес соответственно и данные из первого item`а, а как получить доступ ко всем остальным?
RSS гружу отсюда: http://www.saxson.ru/engine/rss.php
xmldocument1.Active := true;
memo1.lines.add ( xmldocument1.DocumentElement.ChildN odes.Nodes[0].ChildNodes ['description'].Text);
memo1.lines.add ( xmldocument1.DocumentElement.ChildN odes.Nodes[0].ChildNodes ['link'].Text);
memo1.lines.add ('');
memo1.lines.add (xmldocument1.DocumentElement.ChildN odes.Nodes[0].ChildNodes['item'].childnodes['title'].text );
memo1.lines.add ( xmldocument1.DocumentElement.ChildN odes.Nodes[0].ChildNodes ['item'].ChildNodes['link'].text );
memo1.lines.add (xmldocument1.DocumentElement.ChildN odes.Nodes[0].ChildNodes ['item'].ChildNodes['category'].text );
Плохиш (2010-07-23 11:27:00) [1]
> Буржуй (23.07.10 07:14) [9]
>
> у меня нет описания
Смени профессию.
Медвежонок Пятачок (2010-07-23 11:19:00) [2]был бы ты не тормоз, ты бы это понял еще вчера после [6]
Буржуй (2010-07-23 11:10:00) [3]Разобрался, надо было чайлдов узла channel перебирать...
Буржуй (2010-07-23 10:26:00) [4]хсним, как именно перебрать все 'item'... Если ты всё знаешь, то написать строку примера можешь наверное? а то что у рута один child я уже давно понял. В том-то и заключался вопрос, что не получается зделать это: "у каждого чайлда перебираешь его чайлдов ...".
Медвежонок Пятачок (2010-07-23 10:21:00) [5]причем этот единственный чайлд не является узлом <item>
Медвежонок Пятачок (2010-07-23 10:11:00) [6]я тебе уже сказал русским по белому.
начинаешь с рутового узла, перебираешь всех его чайлдов.
у каждого чайлда перебираешь его чайлдов и так далее.
подсказка для танкистов:
в этом твоем конкретном эрэсесе рутовый узел имеет всего одного единственного чайлда.
у рута 1(один) чайлд. больше у рута чайлдов нету.
Буржуй (2010-07-23 09:44:00) [7]нет, ты нормально можешь объяснить как ко всем item`ам доступ получить или нет? ниочем разговоры какие-то, поверь, читай справки, ещё в гугль отправт меня...
Медвежонок Пятачок (2010-07-23 09:18:00) [8]а ты поверь в то, что он аутоф баундс.
тем более что это на самом деле так и есть.
Буржуй (2010-07-23 07:14:00) [9]у меня нет описания, поэтому и задаю все эти вопросы и жду сутками ответов. как чайлдов перебрать тогда? если они никак не хотят перебираться? если индекс ставишь больше 0, то list index out of bound выдает.
Плохиш (2010-07-22 22:49:00) [10]
> Буржуй (22.07.10 21:13) [7]
>
> Можно напримере, я не опытный... как с рута начать в моём
> случае?
Рут - это DocumentElement, а в твоём случае надо начинать с чтения описания/справки.
Буржуй (2010-07-22 21:13:00) [11]Можно напримере, я не опытный... как с рута начать в моём случае?
Медвежонок Пятачок (2010-07-22 20:34:00) [12]конечно можно.
начинаешь с рута. перебираешь всех его чайлдов.
у каждого чайлда перебираешь всех его чайлдов, а у тех чайлдов всех их чайлдов. и так до самого дна.
вот так и получишь все узлы.
Буржуй (2010-07-22 19:37:00) [13]Интересует именно компонент xmldocument. Ведь можно как-то все вершины посмотреть...
Медвежонок Пятачок (2010-07-22 17:25:00) [14]+ если результат надо всего лишь засунуть в мемо в читабельном виде, то решение такое:
рисуем файл трансформации *.xsl, в котором формируем текстовое представление информации из рсс. Далее создаем два экземпляра ixmldomdocument.
В первый грузим рсс, во второй грузим наш xsl.
После чего :
memo1.lines.text := xml1.transformnode(xml2);
и фсё.
Медвежонок Пятачок (2010-07-22 17:20:00) [15]чтобы не было мучительно больно, работать надо через библиотеку типов
msxml2_tlb
используя ixmldomdocument2 и xpath
Буржуй (2010-07-22 16:37:00) [16]Это не проходит, пробовал, только с нулём...
Плохиш (2010-07-22 16:24:00) [17]
> подгружаю значит описание сайта, адрес соответственно и
> данные из первого item`а, а как получить доступ ко всем
> остальным?
> memo1.lines.add ( xmldocument1.DocumentElement.ChildN odes.
> Nodes[ 0].ChildNodes ['description'].Text);
Попробуй заменить индекс на другой.