Сам по себе модуль разрабатывался для одной цели – выбрать и правильно представить информацию по отдельному элементу фида (записи).
Думаю, что этот модуль пригодится тем, кто разрабатывает или планирует разрабатывать приложения так или иначе взаимодействующие с FeedBurner’ом. Простым примером такого приложения может быть программа для работы с пинг-сервисами. В ней модуль используется как раз для того, чтобы правильно заполнить необходимые поля формы.
Кстати, тот факт, что модуль написан в Lazarus не говорит о то, что Вы не сможете применять его в разработках в Delphi. Думаю, что при незначительных поправках в коде он легко интегрируется в Ваше приложение написанное на Delphi.
Итак, рассмотрим, что представляет из себя модуль и как с ним работать. ' ' В модуле определен класс TFeedChanel. Для того, чтобы класс был готов к работе достаточно его создать, используя конструктор:
constructor TFeedChanel.Create(cURL: string); begin inherited Create; GetDocument(cURL); end; |
где cURL – это URL вашего фида. При этом URL может описан либо так:
http://feeds.feedburner.com/myDelphi |
либо так:
http://feeds.feedburner.com/myDelphi?format=xml |
После того, как объект создан в поле FDocument будет содержаться весь XML фида, что избавит нас от лишнего расхода трафика.
Далее можно приступать к использованию свойств.
property ItemsCount: integer read GetItemsCount; |
Содержит общее количество записей фида. Количество записей подсчитывается по количеству узлов item в XML-документе.
property FeedAddress: string read FFeedAdress write SetFeedAdress; |
URL обрабатываемого фида. При этом, если вы меняете адрес фида, то автоматически пересоздается FDocument, избавляя нас от лишних проверок тот ли фид мы обрабатываем.
property Title[i:integer]:string read GetTitle; |
Читает заголовок i-го элемента фида:
function TFeedChanel.GetTitle(const i: integer): string; begin if i>ItemsCount then Exit; Result:=TDOMElement(FDocument.DocumentElement.GetElementsByTagName('item').Item[i]).GetElementsByTagName('title').Item[0].TextContent; {$IFDEF win32} Result:=UTF8Encode(Result); {$ENDIF} end; |
Если i>ItemsCount то возвращается пустая строка.
property Description[i:integer]:string read GetDescr; |
Описание для элемента фида. При этом выводится всё содержимое тега description. Если Вам необходимо выводить, например, только 255 первых символов, то это свойство необходимо немного доработать.
property Tags[i:integer]:TstringList read GetTags; |
Выводит содержимое тегов category каждого элемента фида. Слудует отметить, что у FeedBurner’а нет различий между названием категории и тегов записи – все они оформляются одинаково.
property DirectLink[i:integer]: string read GetDirectLink; |
Ссылка назапись в блоге для выбранного элемента фида. Здесь следует отразить следующий момент. Не знаю как у Вас, а у меня в фиде ссылки на посты выглядят следующим образом:
А в блоге все ссылки с ЧПУ, т.е. вида:
Поэтому, чтобы не было разночтений между тем, что содержится в фиде и тем, что есть на самом деле в методе GetDirectLink проводится следующая дополнительная обработка:
[...] with (THTTPSend.Create) do begin HTTPMethod('get',result); case ResultCode of 301,302:begin for j:=0 to Headers.Count-1 do begin if pos('Location: ',Headers.Strings[j])>0 then begin Result:=copy(Headers.Strings[j],11, length(Headers.Strings[j])-10); break; end; end; end; 400:Result:=''; end; end; |
т.е, идёт проверка возвращаемого результата. Если есть редирект, то соответственно выбираем ссылку из заголовка (Location), если вернулся код 404 – страницы недоступна и, соответственно ссылку не показываем. Здесь проводится проверка только на редиректы и отсутствие страницы, вы моете доработать проверку под свои нужды, например добавить проверку на код 500 и т.д., но в общем случае, думаю это не потребуется.
property BlogTitle: string read GetBlogTitle; |
Выводит название блога (первый тег title в XML-документе)
property BlogURL: string read GetBlogURL; |
Выводит URL блога.
Вот пожалуй всй, что можно получить из фида, используя модуль. Кстати, дополниельно можете использовать модуль для работы с API FeedBurner’а (разработан в Delphi)
Скачать модуль можно, как всегда, здесь либо со страницы исходников.
Хотите сделать пластическую операцию своему четвероногому другу? Обращаётес в ветеринарную клинику "Биоконтроль".
Устали от забот и хлопот? Всё надоело и хочется уехать из этого города? Отдых в Доминикане - лучший выбор.
Негде разместить комутационное оборудование? Используйте центр обработки данных от компании msm.ru
А если у Вас нет необходимой техники, то загляните в интернет магазин компьютерной техники - здесь найдётся любая техника, на любой вкус и кошелек.
Оборудование установлено, фирма работает, но никто о ней не знает. Лучший вариант - обратиться в рекламмно-производственную компанию "Лазерстиль" и закажите pos материалы для своей организации
-----------------------------
Related posts:









