Načitanie časti textu zo stranky
Načitanie časti textu zo stranky
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
- Príspevky: 25958
- Registrovaný: 09 sep 2005, 18:39
- Kontaktovať používateľa:
najprv si pripojíš knižnicu na prácu s htmlpotom si do webbrowser načítaš danú stránku:a potom do mema zobrazíš jej zdroják:
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
Kód: Vybrať všetko
uses mshtmlKód: Vybrať všetko
begin
webbrowser1.navigate('http://www.nbs.sk/KL/AKTKLSL.SDF');
end;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;-
mastermind
VIP
- Príspevky: 4810
- Registrovaný: 09 feb 2005, 13:17
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...
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
- Príspevky: 25958
- Registrovaný: 09 sep 2005, 18:39
- Kontaktovať používateľa:
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 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...
-
mastermind
VIP
- Príspevky: 4810
- Registrovaný: 09 feb 2005, 13:17
no to mi je jasne ze sa ten parser sa da napisat aj v delphi.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.
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
-
audiotrack
VIP
- Príspevky: 25958
- Registrovaný: 09 sep 2005, 18:39
- Kontaktovať používateľa:
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: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
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>-
audiotrack
VIP
- Príspevky: 25958
- Registrovaný: 09 sep 2005, 18:39
- Kontaktovať používateľa:
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/
http://www.w3.org/Style/XSL/
-
mastermind
VIP
- Príspevky: 4810
- Registrovaný: 09 feb 2005, 13:17
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)
// 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
- Príspevky: 25958
- Registrovaný: 09 sep 2005, 18:39
- Kontaktovať používateľa:
no toto je asi najideálnejšie riešenie, ale: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)
pato83 napísal:Zdravim všetkych, vopred chcem upozornit, že len začinam, tak na mna pomaly.![]()
-
mastermind
VIP
- Príspevky: 4810
- Registrovaný: 09 feb 2005, 13:17
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
ale audiotrack to vystihol.