DevProTalk

DevProTalk (http://www.devprotalk.com/index.php)
-   (X)HTML, JavaScript, DHTML, XML, CSS (http://www.devprotalk.com/forumdisplay.php?f=8)
-   -   XML parsiranje i uklanjanje pojedinih elemenata (http://www.devprotalk.com/showthread.php?t=10728)

Dzonny 24. 01. 2012. 20:00

XML parsiranje i uklanjanje pojedinih elemenata
 
Pozdrav.

Potreban mi je savet oko uklanjanja pojedinih elemenata iz xml fajla koje preuzimam. U pitanju je kursna lista čiji sadraj uzimam odavde:
Kd:

http://kursna-lista.info/dev/rates2.php?code=rsd&xml
Kao to vidite lista je poveća, a i pokazuje za neke valute samo nule, npr:
Citat:

BGN 0.0000 1 BGN = 0.0000 RSD
RON 0.0000 1 RON = 0.0000 RSD
RUB 0.0000 1 RUB = 0.0000 RSD
TRY 0.0000 1 TRY = 0.0000 RSD
Da li mi moete reći kako da uklonim pojedinačne elemente u ovom slučaju, dakle npr da vuče sve podatke osim ovih koje sam naveo, i da li je to uopte moguće u ovom slučaju?


p.s - da li je neko upoznat sa time da li NBS nudi xml fajl sa kursnom listom, poto ja nisam uspeo da nadjem takav fajl?

Unapred zahvalan,
Nikola

AdriaMart 24. 01. 2012. 20:06

xpath?

japan 24. 01. 2012. 20:16

Postoji servis NBS, ali nije javni vec, koliko znam, moras biti registrovan kod njih, i to je moguce samo za pravna lica.

Nenad Vasić 24. 01. 2012. 20:21

Kao autor tog sajta ti preporučujem da koristi http://www.kursna-lista.info/kursna-lista-api :)

Dzonny 24. 01. 2012. 20:27

Hvala svima na odgovorima, probaću sad sa xpath.
Nenade, upravo sam se registrovao, samo jedno pitanje, da li mi je dozvoljeno da podatke sa linka parsiram i prikaem kod sebe na sajtu? :)

Nenad Vasić 24. 01. 2012. 20:32

Bukvalno je sve dozvoljeno ako misli na podatke preuzete preko API-a.

Dzonny 24. 01. 2012. 21:01

Hvala lepo na odgovoru Nenade, da mislio sam na podatke preuzete preko API-a.
Izvinjavam se to koristim ovu temu, ali reci mi samo jo da li postoji poseban razlog zato za poslednjih 6 valuta ima samo podatka o srednjem kursu? I reci mi da li ti preuzima podatke sa sajta NBS? (čisto da znam, iako ne mogu da se bakćem sa tim, registrovao sam se kod tebe i prepravio skriptu tako da bi ovo trebalo da bude ok to se mene tiče)

Nenad Vasić 24. 01. 2012. 21:43

NBS ne objavljuje kupovne i prodajne kurseve za tih 6 valuta. Ako me pita zato, nemam pojma. Nisam ba toliko upućen u monetarnu politiku i devizno poslovanje.

AlexG 22. 09. 2012. 16:39

Pozdrav,

Vidim da je tema malo starija ali je za mene trenutno aktuelna, video sam da se zaista mnogo ljudi muči sa novim sistemom NBS za izvlačenje kursne liste, Peđa Supurović je dosta pomogao oko svega da se na kraju dobije php stranica koja izbacuje rezultate slične Ovim i to je ono to na kraju ispadne laki deo (uz pomoć Peđe) a tei deo parsiranje i uklanjanje pojedinih elemenata niko nije podelio sa ostatkom sveta koji se ne razume u parsiranje tako da me zanima da li bi neko bio dobre volje da podeli svoj kod parsiranja ovih xml podataka? Znam da traim mnogo ali i delić kada bi se podelio bar da da smernice kako se to radi bio bih zahvalan.
Unapred hvala.

webarto 22. 09. 2012. 22:14

^Budi specifičniji, šta ti treba, šta ti ne treba, daj primjer i možeš dobiti code, ovako pitanje ti je preopširno.

AlexG 23. 09. 2012. 05:28

Konkretnije
 
Izvinjavam se, potrudiću se da sada budem malo jasniji.

Konkretno potrebna mi je kursna lista Narodne Banke Srbije na dan koja će prikazivati sve valute ili samo najpopularnije, čitao sam na dosta strana i vodeo da kao prvo treba registracija na NBS kako bi se dobio licencni kod, to sam nekako uspeo da uradim, poslao podatke NBS-u, oni to odobrili i dosao sam do licence, potom sam uradio sve sto je napisao Peđa Supurović na svom Blogu: LINK. Dakle taj prvi deo je uspeno odrađen, kreirao sam kurs.php koji sada kada se direktno udje na njega prikazuje podatke tipa:

Citat:

182 21.09.2012 21.09.2012 31.12.4172 3 2 978 978 EUR Евро Evro Euro ЕМУ EMU EMU 1 0.0000 115.2809 0.0000 0.000000 182 21.09.2012 21.09.2012 31.12.4172 3 3 36 036 AUD Аустралијски долар Australijski dolar Australian Dollar Аустралија Australija Australia 1 0.0000 92.9310 0.0000 0.000000 182 21.09.2012 21.09.2012 31.12.4172 3 3 124 124 CAD Канадски долар Kanadski dolar Canadian Dollar Канада Kanada Canada 1 0.0000 91.0807 0.0000 0.000000 182 21.09.2012 21.09.2012......... itd.
Ali kada uđem u Page Source te stranice vidim da su podaci lepo sloeni kao XML i izgledaju ovako:

Kd:

<ExchangeRateDataSet>
  <ExchangeRate>
    <ExchangeRateListNumber>182</ExchangeRateListNumber>
    <Date>21.09.2012</Date>
    <CreateDate>21.09.2012</CreateDate>
    <DateTo>31.12.4172</DateTo>
    <ExchangeRateListTypeID>3</ExchangeRateListTypeID>
    <CurrencyGroupID>2</CurrencyGroupID>
    <CurrencyCode>978</CurrencyCode>
    <CurrencyCodeNumChar>978</CurrencyCodeNumChar>
    <CurrencyCodeAlfaChar>EUR</CurrencyCodeAlfaChar>
    <CurrencyNameSerCyrl>Евро</CurrencyNameSerCyrl>
    <CurrencyNameSerLat>Evro</CurrencyNameSerLat>
    <CurrencyNameEng>Euro</CurrencyNameEng>
    <CountryNameSerCyrl>ЕМУ</CountryNameSerCyrl>
    <CountryNameSerLat>EMU</CountryNameSerLat>
    <CountryNameEng>EMU</CountryNameEng>
    <Unit>1</Unit>
    <BuyingRate>0.0000</BuyingRate>
    <MiddleRate>115.2809</MiddleRate>
    <SellingRate>0.0000</SellingRate>
    <FixingRate>0.000000</FixingRate>
  </ExchangeRate>
  <ExchangeRate>
    <ExchangeRateListNumber>182</ExchangeRateListNumber>
    <Date>21.09.2012</Date>
    <CreateDate>21.09.2012</CreateDate>
    <DateTo>31.12.4172</DateTo>
    <ExchangeRateListTypeID>3</ExchangeRateListTypeID>
    <CurrencyGroupID>3</CurrencyGroupID>
    <CurrencyCode>36</CurrencyCode>
    <CurrencyCodeNumChar>036</CurrencyCodeNumChar>
    <CurrencyCodeAlfaChar>AUD</CurrencyCodeAlfaChar>
    <CurrencyNameSerCyrl>Аустралијски долар</CurrencyNameSerCyrl>
    <CurrencyNameSerLat>Australijski dolar</CurrencyNameSerLat>
    <CurrencyNameEng>Australian Dollar</CurrencyNameEng>
    <CountryNameSerCyrl>Аустралија</CountryNameSerCyrl>
    <CountryNameSerLat>Australija</CountryNameSerLat>
    <CountryNameEng>Australia</CountryNameEng>
    <Unit>1</Unit>
    <BuyingRate>0.0000</BuyingRate>
    <MiddleRate>92.9310</MiddleRate>
    <SellingRate>0.0000</SellingRate>
    <FixingRate>0.000000</FixingRate>
  </ExchangeRate>
...
...
</ExchangeRateDataSet>

Ono to je meni potrebno je da na neki način izvadim iz toga "<Date>", "<MiddleRate>" i "<CurrencyNameSerLat>".

I to stavim u neku tabelu npr:
Kd:

    <div>
    <p><b>-->> XML row <Date> <<--</b></p>
    <table>
    <tbody><tr>
    <td>-->> XML row <CurrencyNameSerLat> <<--</td><td>-->> XML row <MiddleRate> <<--</td></tr>
    <td>-->> XML row <CurrencyNameSerLat> <<--</td><td>-->> XML row <MiddleRate> <<--</td></tr>
    <td>-->> XML row <CurrencyNameSerLat> <<--</td><td>-->> XML row <MiddleRate> <<--</td></tr>
    <td>-->> XML row <CurrencyNameSerLat> <<--</td><td>-->> XML row <MiddleRate> <<--</td></tr>
    <td>-->> XML row <CurrencyNameSerLat> <<--</td><td>-->> XML row <MiddleRate> <<--</td></tr>
    <td>-->> XML row <CurrencyNameSerLat> <<--</td><td>-->> XML row <MiddleRate> <<--</td></tr>
    </tbody></table>
    </div>

Znam da ove ima mnogo posla ali predpostavljam da je to neko već uradio s obzirom da veliki broj sajtova ima svoju kursnu listu pa me zanima da li bi neko bio dobre volje da to podeli.
Meni konkretno ovo treba za fakultet, dobio sam kao zadatak na jednom predmetu, ako ne uspem crno mi se pie :)

Unapred hvala.

Nemanja Avramović 23. 09. 2012. 10:25

http://php.net/manual/en/simplexml.examples-basic.php

AlexG 23. 09. 2012. 16:47

Hvala Nemanja, pokuao sam da uradim to sa Basic SimpleXML-om na ovaj način iz njihovog primera:
Kd:

include 'kurs.php';

$ExchangeRateDataSet = new SimpleXMLElement($xmlstr);

foreach ($ExchangeRateDataSet->ExchangeRate as $ExchangeRate) {
  echo $ExchangeRate->CurrencyNameSerLat, $ExchangeRate->MiddleRate, PHP_EOL;
}

To je nova stranica lista.php, ali kada se uđe u nju direktno izgleda identično kao i kurs.php

Citat:

182 21.09.2012 21.09.2012 31.12.4172 3 2 978 978 EUR Евро Evro Euro ЕМУ EMU EMU 1 0.0000 115.2809 0.0000 0.000000 182 21.09.2012 21.09.2012 31.12.4172 3 3 36 036 AUD Аустралијски долар Australijski dolar Australian Dollar Аустралија Australija Australia 1 0.0000 92.9310 0.0000 0.000000 182 21.09.2012 21.09.2012 31.12.4172 3 3 124 124 CAD Канадски долар Kanadski dolar Canadian Dollar Канада Kanada Canada 1 0.0000 91.0807 0.0000 0.000000 182 21.09.2012 21.09.2012......... itd.
Predpstavljam da se to deava jer u kurs.php nemam ubačen:
Kd:

//Na pocetku
$xmlstr = <<<XML
<?xml version='1.0' standalone='yes'?>
...
//Na kraju
XML;

Tako da sve to sam ubacio od drugog reda pa na dalje u lista.php nema nikakvog značaja.
Ako je u tome problem onda bih predpostavljam trebao neto da ubacim u ovaj deo kurs.php-a:

Kd:

$p_parameters = array('date'=>$m_date, 'exchangeRateListTypeID' => $m_list_type);
A moda i ne, ne razumem se, jo uvek učim, nemojte zameriti.

Nemanja Avramović 23. 09. 2012. 17:19

Nemoj da inkluduješ kurs.php već string (XML) koji dobiješ od NBS servisa prosledi SimpleXMLElement() funkciji

AlexG 23. 09. 2012. 17:58

Hvala puno jo jednom, konačno je sve na svom mestu. :)

Peca 24. 09. 2012. 01:37

http://pedja.supurovic.net/php-nusoa...rsnu-listu-nbs

mileusna 24. 09. 2012. 01:47

To je SOAP servis, tako da ti i ne treba da parsiraš taj XML već lepo pogledaj na koji način funkcioniše SOAP tehnologija generalno. I na samom blogu Supurovića se sve odnosi na SOAP, pa ne znam kako ti završi sa parsiranjem XML-a? To je posao koji obavlja Soap Client za tebe, zato se i koristi.

Pored Nusoap koji se pominje u tekstu, sada je SOAP već standardni deo PHP-a, pa možeš da koristiš i PHP SoapClient http://php.net/manual/en/book.soap.php

AlexG 24. 09. 2012. 08:19

Mileusna,
Citat:

Originalno napisao mileusna (Napiite 108586)
To je SOAP servis, tako da ti i ne treba da parsiraš taj XML već lepo pogledaj na koji način funkcioniše SOAP tehnologija generalno. I na samom blogu Supurovića se sve odnosi na SOAP, pa ne znam kako ti završi sa parsiranjem XML-a? To je posao koji obavlja Soap Client za tebe, zato se i koristi.

Pored Nusoap koji se pominje u tekstu, sada je SOAP već standardni deo PHP-a, pa možeš da koristiš i PHP SoapClient http://php.net/manual/en/book.soap.php

Istina, SOAP radi ceo posao ali u slučaju da želim da kupim podatke o svim valutama odjednom sa NBS funkciom GetCurrentExchangeRate SOAP mi generiše xml file koji ima sve podatke o svim valutama te ako želim da iz celog XML-a izvadim samo neke redove koristim SIMPLEXML kao što mi je rekao Nemanja i umesto svih podataka dobijem samo one koje sam zatražio, možda postoji i drugi način ali ovaj mi je rešio problem.

Peco,
Citat:

Originalno napisao Peca (Napiite 108585)

Moje pitanje se odnosilo na nešto drugo ali u svakom slučaju hvala.

Peca 24. 09. 2012. 15:07

Znam znam... ali mi se cini da si pitao da li NBS ima neki XML...


Vreme je GMT +2. Trenutno vreme je 20:24.

Powered by vBulletin® Verzija 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright © DevProTalk. All Rights Reserved.

Miljenja, saveti, izjave, ponude ili druge informacije ili sadraji nastali na Sajtu su vlasnitvo onoga ko ih je kreirao, a ne DevProTalk.com, tako da ne morate da se oslanjate na njih.
Autori poruka su jedini odgovorni za ovakve sadraje. DevProTalk.com ne garantuje tačnost, kompletnost ili upotrebnu vrednost informacija, stavova, saveta ili datih izjava. Ne postoje uslovi pod kojima bi mi bili odgovorni za tetu ili gubitak koji je posledica bilo čijeg oslanjanja na nepouzdane informacije, ili bilo kakve informacije nastale kroz komunikaciju između registrovanih članova.
Web sajt moe sadravati linkove na druge web sajtove na Internetu ili neke druge sadraje. Ne kontroliemo niti podravamo te druge web sajtove, niti smo pregledali bilo kakve sadraje na takvim sajtovima. Mi nećemo biti odgovorni za legalnost, tačnost ili prikladnost bilo kog sadraja, oglasa, proizvoda, usluga ili informacije lociranim na ili distribuiranih kroz druge web sajtove, niti za bilo kakvu tetu nastalu kao posledica takvih informacija. DevProTalk.com dri i čuva druga prava vlasnitva na web sajtu. Web sajt sadre materijale zatićene copyright-om, zatitne znakove i druge informacije o pravu vlasnitva ili softver. Članovi mogu poslatu informacije zatićene pravima vlasnitva njihovih nosilaca i ona ostaju zatićena bez obzira da li su oni koji prenose te informacije to naveli ili ne. Osim informacija koje su u javnom vlasnitvu ili za koje dobijete dozvolu, nemate pravo da kopirate, modifikujete ili na bilo koji način menjate, objavljujete, prenosite, distribuirate, izvravate, prikazujete ili prodajte bilo koju informaciju zatićenu pravima vlasnitva. Slanjem informacija ili sadraja na bilo koji deo DevProTalk.com, Vi automatski dozvoljavate i predstavljate garanciju da imate pravo da dozvolite DevProTalk.com ili članovima DevProTalk.com bespovratnu, kontinualnu, neograničenu, globalnu dozvolu da koriste, kopiraju, izvravaju, prikazuju i distribuiraju takve informacije i sadraje i da iz takvih sadaja koriste bilo koji deo u bilo koje svrhe, kao i pravo i dozvolu da koriste gore navedene sadraje. Svi zatitni znakovi (trademarks), logotipi, oznake usluga, firme ili imena proizvoda koji se pominju na ovom web sajtu su vlasnitvo kojim raspolau njihovi vlasnici.