Načitanie časti textu zo stranky

Programovacie jazyky, rady, poradňa...
pato83
Addict
Addict
Používateľov profilový obrázok
Príspevky: 3916
Registrovaný: 21 nov 2005, 22:12

Načitanie časti textu zo stranky

Príspevok od používateľa pato83 »

Zdravim všetkych, vopred chcem upozornit, že len začinam, tak na mna pomaly. :) Pracujem v delphi, chcel by som si vytvorit daku kalkulačku ktorá by načitala kurz určitej meny zo stranky. Napr.: http://www.nbs.sk/KL/AKTKLSL.HTM . Je tam možnost v doc, xml, sdf. Vzhladom na to, že bude možnost vybrat si aj jednotlive bankové institucie, by bolo asi najvhodnejsie tahat udaje zo zdroja. Ako by to malo vyzerat, konkretne to aby precital tu spravnu informaciu, t.j. aktualny kurz? Len toto ma zaujima, s ostatným sa chcem potrapit sám.
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Príspevok od používateľa audiotrack »

najprv si pripojíš knižnicu na prácu s html

Kód: Vybrať všetko

uses mshtml
potom si do webbrowser načítaš danú stránku:

Kód: Vybrať všetko

begin
webbrowser1.navigate('http://www.nbs.sk/KL/AKTKLSL.SDF');
end;
a potom do mema zobrazíš jej zdroják:

Kód: Vybrať všetko

var
    iall : IHTMLElement;
begin
   if Assigned(WebBrowser1.Document) then
   begin
     iall := (WebBrowser1.Document AS IHTMLDocument2).body;

     while iall.parentElement <> nil do
     begin
       iall := iall.parentElement;
     end;
     memo1.Text := iall.outerHTML;
   end;
aby ti to nezavadzalo, webbrowser aj memo si môžeš skryt. Hodnotu visible dáš na false. V memo si už budeš iba prechádzať textom a hladať potrebné info (môžeš ho dať dostatočne široký, aby si mal každú menu v jednom riadku, ulahčí sa ti prehladávanie). Načítanie stránky do webbrowseru si daj do procedúry formulára onshow
mastermind
VIP
VIP
Používateľov profilový obrázok
Príspevky: 4810
Registrovaný: 09 feb 2005, 13:17

Príspevok od používateľa mastermind »

myslim ze xml je lepsia volba. urcite kazda institucia bude posktytovat takuto moznost. A ked nie, tak najlepsie je urobit si web service ktora bude rozparsovavat hodnoty zo zdrojov a tvoj program sa napoji az na nu.
Je to omnoho lepsie riesenie z jedoducheho dovodu. Co v pripade, ze sa zmeni struktura toho xml? Tvoja aplikacia by prestala byt funkcna a vsetky instalacie by potrebovali update.
tak by si len updatol webovu sluzbu a aplikacia by ficala dalej...
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Príspevok od používateľa audiotrack »

mastermind napísal:myslim ze xml je lepsia volba. urcite kazda institucia bude posktytovat takuto moznost. A ked nie, tak najlepsie je urobit si web service ktora bude rozparsovavat hodnoty zo zdrojov a tvoj program sa napoji az na nu.
Je to omnoho lepsie riesenie z jedoducheho dovodu. Co v pripade, ze sa zmeni struktura toho xml? Tvoja aplikacia by prestala byt funkcna a vsetky instalacie by potrebovali update.
tak by si len updatol webovu sluzbu a aplikacia by ficala dalej...
ten súbor som tam načítaval ako ukážku, môže tam natiahnúť aj xml. A ten parser sa dá urobiť aj v delphi ako ďalšiu procedúru.
mastermind
VIP
VIP
Používateľov profilový obrázok
Príspevky: 4810
Registrovaný: 09 feb 2005, 13:17

Príspevok od používateľa mastermind »

audiotrack napísal:ten súbor som tam načítaval ako ukážku, môže tam natiahnúť aj xml. A ten parser sa dá urobiť aj v delphi ako ďalšiu procedúru.
no to mi je jasne ze sa ten parser sa da napisat aj v delphi.
xml je urcite vhodnejsie riesenie, kvoli jasne definovanej strukture.
no a webova sluzba je vhodnejsia prave kvoli tomu, ze vyriesis problemy so zmenou struktury, bez zmeny programu
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Príspevok od používateľa chrono »

Zmeny štruktúry xml od NBS by som sa neobával. :)
Ale pre istotu by som tam pridal aj spracovanie pomocou xsl (ak by sa štruktúra predsa len zmenila, preženie sa ten xml súbor cez správnu xsl šablónu).
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Príspevok od používateľa audiotrack »

mastermind napísal:no to mi je jasne ze sa ten parser sa da napisat aj v delphi.
xml je urcite vhodnejsie riesenie, kvoli jasne definovanej strukture.
no a webova sluzba je vhodnejsia prave kvoli tomu, ze vyriesis problemy so zmenou struktury, bez zmeny programu
no asi sa nerozumieme: ja nepotrebujem so zmenou štruktúry xml meniť zdroják parseru napísaného v delphi. Xml má asi takúto štruktúru:

Kód: Vybrať všetko

<nbsDailyFxRateList>
<lang>slovenčina</lang>
<validFrom>2007-03-05</validFrom>
<number>45</number>
-
	<rateList>
-
	<rate>
<country>Austrália</country>
<ccyCode>AUD</ccyCode>
<amount>1</amount>
<value>20.429</value>
</rate>
-
	<rate>
<country>Bulharsko</country>
<ccyCode>BGN</ccyCode>
<amount>1</amount>
<value>17.556</value>
</rate>
čiže si oddelím obsah medzi <rate> a <rate> a potom oddelujem obsah medzi <ccyCode>-</ccyCode> a medzi <value>-</value> a je mi ukradnuté či je euro na prvej pozícii alebo niekde v strede.
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Príspevok od používateľa chrono »

audiotrack: A keď sa zmenia tagy v tom xml? (ale ako som písal vyššie, pri NBS je to malá pravdepodobnosť [pravdepodobne ide o nejaký medzinárodný formát])
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Príspevok od používateľa audiotrack »

chrono napísal:audiotrack: A keď sa zmenia tagy v tom xml? (ale ako som písal vyššie, pri NBS je to malá pravdepodobnosť [pravdepodobne ide o nejaký medzinárodný formát])
tak potom príde na svet kalkulačka v.2 :oops:
Akože ja som ešte takéto veci nerobil, tak sa rád poučím ak poznáš lepšie riešenie.
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Príspevok od používateľa chrono »

Ak budeš mať čas a chuť, prečítaj si niečo o XSL (XSLT, XPath...). Pomocou XSLT môžeš napr. zmeniť XML na HTML/WAP... (v podstate na akýkoľvek textový formát).
http://www.w3.org/Style/XSL/
mastermind
VIP
VIP
Používateľov profilový obrázok
Príspevky: 4810
Registrovaný: 09 feb 2005, 13:17

Príspevok od používateľa mastermind »

tiez si myslim, ze zmena struktury v tomto pripade nehrozi, zrejme to je nejaky celosvetovy standard, ale predsa. Preco robit nieco presne na mieru ked si mozme uz pocas vyvoja pripravit miesto na riesenie pripadnych problemov.
XSL je dobre riesenie, ale znova je potrebny update samotneho programu.
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Príspevok od používateľa chrono »

Ak chceš použiť aj XSL nie je potrebná žiadna zmena programu. Jednoducho do programu pridáš (okrem otvorenia XML súboru) aj voľbu použiť šablónu (a pridáš tam editbox kde sa zadá meno tej XSL šablóny). Môžeš program upraviť tak, že si automaticky bude šablónu načítavať (ak bude existovať). Potom sa súbor XML otvorí a podľa potreby sa vykoná XSL transformácia. Výsledkom bude XML súbor v správnom formáte (a až ten sa bude parsovať).

// chrono: Pri zmene formátu iba zmeníš šablónu. Ak by náhodou iná banka mala ten formát XML iný jednoducho použiješ iný XSL (a po transformácii dostaneš správny XML)
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Príspevok od používateľa audiotrack »

chrono napísal:Ak chceš použiť aj XSL nie je potrebná žiadna zmena programu. Jednoducho do programu pridáš (okrem otvorenia XML súboru) aj voľbu použiť šablónu (a pridáš tam editbox kde sa zadá meno tej XSL šablóny). Môžeš program upraviť tak, že si automaticky bude šablónu načítavať (ak bude existovať). Potom sa súbor XML otvorí a podľa potreby sa vykoná XSL transformácia. Výsledkom bude XML súbor v správnom formáte (a až ten sa bude parsovať).

// chrono: Pri zmene formátu iba zmeníš šablónu. Ak by náhodou iná banka mala ten formát XML iný jednoducho použiješ iný XSL (a po transformácii dostaneš správny XML)
no toto je asi najideálnejšie riešenie, ale:
pato83 napísal:Zdravim všetkych, vopred chcem upozornit, že len začinam, tak na mna pomaly. :)
:) tak neviem či to dokáže zrealizovať. Sám si na také niečo netrúfam
mastermind
VIP
VIP
Používateľov profilový obrázok
Príspevky: 4810
Registrovaný: 09 feb 2005, 13:17

Príspevok od používateľa mastermind »

chrono mne je jasny sposob fungovania xsl. Ale tak ako pri mojom rieseni znova tu potrebujes nejaky server kde by ta xsl bola umiestnena. A ak by tych transformacii bolo viac... Zda sa mi to ako zbytocne zlozite. Ak by ti vsak potrebne udaje predpripravila webova sluzba, program by mal pokoj...

ale audiotrack to vystihol. :) radsej sa vratme k tomu rieseniu s obyc xml, bez pouzitia transformacii. Ked uz to bude nakodene, potom sa mozme bavit aj o takychto veciach
Napísať odpoveď