![]() |
|
#1
|
||||
|
||||
![]() Доброе время суток, господа. Прошу помочь мне с одной проблемой.
Итак, мне потребовалось использовать веб-API в программе, которую я пишу, а писака из меня, признать, так себе - неуч и самоучка. В итоге я смог освоиться с GET-запросами, но вот затык: из полученного XML-файла неизвестной длинны мне нужно выдирать ровно одну строчку в каждом подразделе. Подробнее. Само API: http://api.eve-central.com/api/marke...ystem=30000142 Итак, из каждого подраздела <type> нужно извлекать всего две вещи: его id (параметр) и графу /<type>/<buy>/<percentile>. И я представления не имею, как это сделать, даже после прочтения массы статей, найденных в гугле - каждая попытка что-то сделать заканчивалась провалом. Не могли бы вы мне на конкретном примере показать, как это можно сделать? Желательны указания на необходимые объявления и компоненты, которые нужно ставить. Заранее спасибо. Если не ты, то кто? (с) Терри Пратчетт Не забывайте ставить плюсы и говорить спасибо! |
#2
|
||||
|
||||
![]() IXMLDocument
Можно даже выборки делать из XML. — Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#3
|
||||
|
||||
![]() MADMAN, я его установил, но мою проблему это не решило. Я всё равно не понимаю, как не пропарсить весь XML-файл и не вогнать его в Memo, а брать два конкретных параметра из каждой графы <type>.
UPD: Упс, я сначала усмотрел в сообщении ECXMLParser. Тем не менее, я в этой области и правда ни в зуб ногой. Если не ты, то кто? (с) Терри Пратчетт Не забывайте ставить плюсы и говорить спасибо! |
#4
|
||||
|
||||
![]() для загрузки и парсинга xml очень удобно использовать IXMLHttpRequest.
Пишу программы за еду. __________________ |
#5
|
||||
|
||||
![]() Я вот как загружал.
Код:
Address:='http://api.eve-central.com/api/marketstat?typeid=34&usesystem=30000142'; idhttp.Host:='http://eve-central.com'; stream:=TMemoryStream.Create; stream.Seek(0,soBeginning); stream.Position:=0; idhttp.Get(Address,stream); XMLDocument1.Active:=True; XMLDocument1.LoadFromStream(stream); Если не ты, то кто? (с) Терри Пратчетт Не забывайте ставить плюсы и говорить спасибо! |
#6
|
||||
|
||||
![]() Код:
FXMLHttpRequest: IXMLHttpRequest; XMLDOMDocument: IXMLDOMDocument; uid: String; ... FXMLHttpRequest:=CreateComObject(CLASS_XMLHTTPRequest) as IXMLHttpRequest; FXMLHttpRequest.open('GET', 'http://server/xml', False, '', ''); FXMLHttpRequest.send(''); if FXMLHttpRequest.status<>200 then raise ... XMLDOMDocument:=XMLHttpRequest.responseXML as IXMLDOMDocument; if XMLDOMDocument.parseError.errorCode<>0 then raise ... uid:=XMLDOMDocument.getElementsByTagName('uid').item[0].text; Пишу программы за еду. __________________ |
#7
|
||||
|
||||
![]() Вопросы по коду.
Цитата:
Цитата:
Ну братцы, ну помогите уже набросать процедуру выдирания этих переменных из XML, благо он у вас на виду. Я задам вопросы по непонятным местам и все будут счастливы же. UPD: Хотя, в общем, можно получать первый и каждый последующий через два тег, но, может, всё-таки не извращаться и воспользоваться более традиционными средствами? Например, я не понимаю, как обратиться к дочерней ноде дочерней ноды. Если не ты, то кто? (с) Терри Пратчетт Не забывайте ставить плюсы и говорить спасибо! Последний раз редактировалось EvilRussian, 17.12.2012 в 21:02. |
#8
|
||||
|
||||
![]() в google бы хоть их вбил:
http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx заметь, все для полного парсинга есть. и находящихся где-то и атрибутов... Пишу программы за еду. __________________ |
#9
|
||||
|
||||
![]() Можно ссылку на скачку? Я что-то нашёл, но явно не то.
Также желательна помощь в написании кода. Проверите то, что я напишу? Если не ты, то кто? (с) Терри Пратчетт Не забывайте ставить плюсы и говорить спасибо! |
#10
|
||||
|
||||
![]() Цитата:
Пишу программы за еду. __________________ |