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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.02.2009, 21:39   #11
ZeitGeist7
Пользователь
 
Регистрация: 02.02.2009
Сообщений: 54
По умолчанию

я сейчас пишу прогу в которой:
1) вбиваешь список ссылок (список можно редактироать)
2) этот список качается полностью в указанную папку
3) скачивание может происходить по таймеру обратного отсчёта(врея задаётся)
это то что готово...

что я хочу сделать ещё: поскольку цель проги скачивать различные RSS( xml файлы) и перегонять их в txt файлы то мне нужно что-то что бы их парсило. но не в этом моя главная головная боль.
трудность в том что для каждой ссылки я хочу уже на готовой проге создавать индивидуальные правила перегона. поскольку в каждой rss встречаются различные тэги то единого правила не создашь.
подскажите как можно это реализовать?

исходники предоставить не могу ибо не имею права.

Последний раз редактировалось ZeitGeist7; 03.02.2009 в 21:43.
ZeitGeist7 вне форума Ответить с цитированием
Старый 04.02.2009, 04:39   #12
KORN
Банхаммер
Участник клуба
 
Аватар для KORN
 
Регистрация: 17.02.2007
Сообщений: 1,754
По умолчанию

почему не создашь7 пускай обрабатывает все теги и выстраивает то что тебе нужно, либо добавь только основные, а все остальное пропускай
Перед тем как спросить ищи на форуме и в GOOGLE
KORN вне форума Ответить с цитированием
Старый 04.02.2009, 05:25   #13
ZeitGeist7
Пользователь
 
Регистрация: 02.02.2009
Сообщений: 54
По умолчанию

Цитата:
Сообщение от KORN Посмотреть сообщение
пускай обрабатывает все теги и выстраивает то что тебе нужно, либо добавь только основные, а все остальное пропускай
легко сказать... ты походу не понимаешь что сколько сайтов то столько и возможных структур содержания в файле. то что ты сказал я хочу применять не ко всем подряд а к каждой отдельно. вынеся файлик с правилами перегона их xml в txt отдельно от основного кода.
если совсем ткго то сравни содержания вот этих лент ( http://news.rambler.ru/rss/Russia/head/ ) и ( http://www.cbr.ru/scripts/XML_daily.asp ) и ты увидишь совершенно разные структуры к которым требуются свои правила.

Цитата:
либо добавь только основные, а все остальное пропускай
ага! спасибо... и получит текст с тегами. как некрасиво будет
ZeitGeist7 вне форума Ответить с цитированием
Старый 04.02.2009, 05:47   #14
KORN
Банхаммер
Участник клуба
 
Аватар для KORN
 
Регистрация: 17.02.2007
Сообщений: 1,754
По умолчанию

пропускать т.е. просто игнорировать... и я тебя понял... теги везде одни и те же ты просто для каждого вайта можешь указать какой тег парсить а какой нет, для этого и ini файл покатит
Перед тем как спросить ищи на форуме и в GOOGLE
KORN вне форума Ответить с цитированием
Старый 04.02.2009, 06:24   #15
ZeitGeist7
Пользователь
 
Регистрация: 02.02.2009
Сообщений: 54
По умолчанию

у меня как раз все привязано к ini файлу.
подскажи как. оч прошу!
ZeitGeist7 вне форума Ответить с цитированием
Старый 04.02.2009, 06:56   #16
KORN
Банхаммер
Участник клуба
 
Аватар для KORN
 
Регистрация: 17.02.2007
Сообщений: 1,754
По умолчанию

выкладывай код и будем разбираться... а писать с нуля я не буду
Перед тем как спросить ищи на форуме и в GOOGLE
KORN вне форума Ответить с цитированием
Старый 04.02.2009, 08:01   #17
ZeitGeist7
Пользователь
 
Регистрация: 02.02.2009
Сообщений: 54
По умолчанию

скажи почтовый ящик в личку. на него пришлю исходники.
ZeitGeist7 вне форума Ответить с цитированием
Старый 04.02.2009, 13:21   #18
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Странно я наверное не понимаю чего то... Это с каких таких пор "правила" RSS каждый сайт сам решает ? Вообщет то советую почитать про RSS спецификацию, то как там и какие теги за что отвечают. Их менять произвольно нельзя, добавлять, да, каждый может присабачить к xml свои теги и свою информацию. Если такая самостоятельная информация не документирована и ее представляет единый сайт (единственный случай) то уж тут извените, привязыватся надо тогда только к этому сайту, и парсить его дополнительные теги.
BOBAH13 вне форума Ответить с цитированием
Старый 04.02.2009, 15:46   #19
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

ZeitGeist7, если у вас неполучается самому следовать стнадртам при анализе RSS пользуйтесь лучше готовыми решениями. Кпримеру от IP.Works
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Старый 18.02.2009, 21:41   #20
ZeitGeist7
Пользователь
 
Регистрация: 02.02.2009
Сообщений: 54
По умолчанию

у меня правилами зовутся т что у вас называется стандартами. у rss их три.
версия 2.0; версия 0.9 и атом. можно сочинить свои функции. вот я написал для 2.0
Код:
Function  VerXmlToTxt(_XmlLoad, _TxtSaveWay: string) : boolean ;   // эта функция для RSS version="2.0"
var                                                               // в качестве параметров ей передаются имена исходного и конечного файлов.
    _rss_doc: IXMLDOMDocument;                                      //предусмотрены  результата возвращемых функцией: если норм то Ок
    _node: IXMLDOMNode;                                           // не норм  Cancel
  _TextFile: Textfile;                                             //
  _RssItemCounter:Integer;
begin
try
 _rss_doc:=CoDomDocument.Create;
 _rss_doc.async:=false;
 try
 _rss_doc.load(_XmlLoad);
 except
  Result := false;
  exit;
 end;
 _node:= _rss_doc.selectSingleNode('//rss');
 if _rss_doc.parseError.errorCode<>0 then
 begin
  Result := false;
  CoUnInitialize;
  Exit;
 end;
    AssignFile(_TextFile, _TxtSaveWay);
    ReWrite(_TextFile);
   try
    Writeln(_TextFile,_node.selectnodes('//title').item[0].text );    //     заголовок ленты, её название
    Writeln(_TextFile,_node.selectnodes('//description').item[0].text ); //  описание ленты
    Writeln(_TextFile,_node.selectnodes('//lastBuildDate').item[0].text ); // время обновления.
   except
   end;
  for _RssItemCounter:=0 to _node.selectNodes('//item').length-1 do
  begin
    try
      Writeln(_TextFile,' ');
      Writeln(_TextFile,_node.selectnodes('//item').item[_RssItemCounter].selectSingleNode('title').Text);
      Writeln(_TextFile,_node.selectnodes('//item').item[_RssItemCounter].selectSingleNode('link').Text);
      Writeln(_TextFile,_node.selectnodes('//item').item[_RssItemCounter].selectSingleNode('description').Text);
      Writeln(_TextFile,_node.selectnodes('//item').item[_RssItemCounter].selectSingleNode('pubDate').Text);
      Writeln(_TextFile,_node.selectnodes('//item').item[_RssItemCounter].selectSingleNode('author').Text);
      Writeln(_TextFile,' ');
    except 
    end;
  end;
Closefile(_TextFile);
Result := true;
except begin Result := false; exit; end;
end;
end;
минус в том что это костыль. он спотыкается если в документе есть тэг вида
Цитата:
<!DOCTYPE rss PUBLIC "-//Netscape Communications//DTD RSS 0.91//EN" "http://my.netscape.com/publish/formats/rss-0.91.dtd">
как например в rrs у http://lenta.ru
или пропускает мусор вида &quot <br> и прочей муры...
есть ли в природе готовый компонент который умеет работать с rss лентами разных стандартов? или хоть подскажите хоть что нибудь....
ZeitGeist7 вне форума Ответить с цитированием
Ответ


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