Linux за българи: Форуми

Програмиране => Общ форум => Темата е започната от: clovenhoof в Oct 11, 2011, 10:57



Титла: Инструмент за конвертиране на (x)html към xml
Публикувано от: clovenhoof в Oct 11, 2011, 10:57
Търся open-source вариант на подобно тулче.

Идеята е въвеждам url на даден сайт и програмата: прави download на страницата в html формат и след това конвертира в xml.

В краен случай може само за конвертиране от xhtml към xml - също ще е ОК.

ПП: Аз намерих ето това ($2), но е платено с 30 дневен срок.


Титла: Re: Инструмент за конвертиране на (x)html към xml
Публикувано от: Naka в Oct 11, 2011, 11:28
Ако ти се занимава с xslt >:D


Код:
xsltproc  tvoiat_filtar.xslt  some_file.xhtml  >  out.xml

xsltproc го има във всяка линукс дистрибуция... обаче трябва и да си напишеш на xslt твоят собствен филтър....
Ако втори път ми се наложи да пиша нещо на xslt, сериозно ще се замисля..  :'( Много му е крива логиката и синтаксиса.. Може да се окаже, че да си напишеш свой собствен скрипт с някой конвенционален език.. (perl,php...) - ще стане много по-лесно и ефективно.

Какъв трябва да бъде резултатният xml? За какво ще служи.  xhtml нали и без това си е xml?





Титла: Re: Инструмент за конвертиране на (x)html към xml
Публикувано от: clovenhoof в Oct 11, 2011, 12:16
Искам от html-a да извлека данни които да вкарам в база.

Тегля с curl и го конвертирам до xhtml с това ($2).

Сега всички отворени тагове се затварят, обаче има неща като следното което не е валидно заради   Tрябва да е оградено в някакъв таг:

Код
GeSHi (XML):
  1.                    <td>
  2.                      &nbsp; <script src="http://..." type="text/javascript" xml:space="preserve"></script>
  3.                    </td>
  4.  

Искам да го лоудна като валиден xml и XPath заявки да извлека данните които ми трябват.


ПП: Май и това създава проблеми:
Код
GeSHi (XML):
  1. <!DOCTYPE html
  2.   PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  3.   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" >
  4.  

То се добавя след като се конверира до xhtml.

ПП2: Резултантния xml просто трябва да е валиден и да може да се парсва. Аз ползвам DOM.


Титла: Re: Инструмент за конвертиране на (x)html към xml
Публикувано от: Naka в Oct 11, 2011, 14:21
следното което не е валидно заради &nbsp; Tрябва да е оградено в някакъв таг:

Ами изглежда вярно. Би трябвало да не е обградено в таг и да може да се използва &nbsp;

тази ескейп кодове трябва да са описани във файла http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd

ако нещо го няма описано там ще дава грешка в парсването, обаче като го разгледах има и още файлове http://www.w3.org/TR/xhtml1/DTD/xhtml-lat1.ent и вътре в xhtml-lat1.ent си има

Код:
<!ENTITY nbsp   "&#160;"> <!-- no-break space = non-breaking space,
                                  U+00A0 ISOnum -->

т.е. би трябвало да се парсва правилно.

Нещо не се чете както трябва, нито пък се взима под внимание... Не че ги разбирам тези *dtd, ама такива са симптомите....

Що не опиташ да го свалиш въпросното dtd локално (както и допълнителните файлове) и да промениш на
#
<!DOCTYPE html SYSTEM "xhtml1-transitional.dtd">


Титла: Re: Инструмент за конвертиране на (x)html към xml
Публикувано от: clovenhoof в Oct 11, 2011, 15:26
Да. Вместо &nbsp трябва да се ползва &#160;.
Аз обаче реших кардинално проблема като просто махнах <!DOCTYPE html ...> и всички срещания на &nbsp други подобни.
Все пак искам само да извлека инфо от html.

Вече си се парсва екстра :)

Мерси за съдействието!