Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

Hitno!!! SimpleXMLElement problem sa parsiranje XML-a

  • 7 odgovora
  • 3.466 pregleda

Najnovija ↓

Hitno!!! SimpleXMLElement problem sa parsiranje XML-a 22.02.2010. u 23:04 · pre 203 meseca #1
Prsiram nekoliko XML fajla:

https://www.brownpapertickets.com/eventfeed/11
https://www.brownpapertickets.com/eventfeed/20
https://www.brownpapertickets.com/eventfeed/21
https://www.brownpapertickets.com/eventfeed/12
.............

Privi pronje OK, ali drugi.... dobijem sledecu gresku

Code:

php parsexml.php > result.txt
PHP Fatal error:  Uncaught exception 'Exception' with message 'String could not be parsed as XML' in /var/www/web45/web/bpt/parsexml.php:32
Stack trace:
#0 /var/www/web45/web/bpt/parsexml.php(32): SimpleXMLElement->__construct('<?xml version="...')
#1 /var/www/web45/web/bpt/parsexml.php(17): parseXML('https://www.bro...')
#2 {main}
  thrown in /var/www/web45/web/bpt/parsexml.php on line 32



Potpis
routing protocols enable routers to route routed protocols!
Re: Hitno!!! SimpleXMLElement problem sa parsiranje XML-a 22.02.2010. u 23:16 · pre 203 meseca #2
Samo informativno, izbacio sam https://www.brownpapertickets.com/eventfeed/20 i skripta jos radi...

Sta je problem u https://www.brownpapertickets.com/eventfeed/20 ??? Kad na isti nacin se generiraju feedove, tekst je u CDATA.... Nije mi jasno!?!?
Potpis
routing protocols enable routers to route routed protocols!
Re: Hitno!!! SimpleXMLElement problem sa parsiranje XML-a 23.02.2010. u 00:31 · pre 203 meseca #3
Ova dva xml-a ne rade!!!

https://www.brownpapertickets.com/eventfeed/17
https://www.brownpapertickets.com/eventfeed/20


Evo sve feedove
$feeds = array (
'https://www.brownpapertickets.com/eventfeed/11'
,'https://www.brownpapertickets.com/eventfeed/21'
,'https://www.brownpapertickets.com/eventfeed/12'
,'https://www.brownpapertickets.com/eventfeed/18'
,'https://www.brownpapertickets.com/eventfeed/19'
,'https://www.brownpapertickets.com/eventfeed/9'
,'https://www.brownpapertickets.com/eventfeed/14'
,'https://www.brownpapertickets.com/eventfeed/13'
,'https://www.brownpapertickets.com/eventfeed/15'
,'https://www.brownpapertickets.com/eventfeed/10'
,'https://www.brownpapertickets.com/eventfeed/16'
,'https://www.brownpapertickets.com/eventfeed/20'
,'https://www.brownpapertickets.com/eventfeed/17'
);

Zadnja dva ne rade.... dobijem gresku:

Code:

[user@k bpt]# php parsexml.php > result.txt
PHP Fatal error:  Uncaught exception 'Exception' with message 'String could not be parsed as XML' in /var/www/web45/web/bpt/parsexml.php:32
Stack trace:
#0 /var/www/web45/web/bpt/parsexml.php(32): SimpleXMLElement->__construct('<?xml version="...')
#1 /var/www/web45/web/bpt/parsexml.php(17): parseXML('https://www.bro...')
#2 {main}
  thrown in /var/www/web45/web/bpt/parsexml.php on line 32
[root@k bpt]# 

Potpis
routing protocols enable routers to route routed protocols!
Re: Hitno!!! SimpleXMLElement problem sa parsiranje XML-a 23.02.2010. u 01:05 · pre 203 meseca #4
Jesi li siguran da nije timeout? Probaj da povučeš sa file_get_contents (dodaj opciju za veći timeout ako ne prolazi), pa onda da ubaciš u simplexml.
Potpis
http://sr.libreoffice.org — slobodan kancelarijski paket, obrada teksta, tablice,
prezentacije, legalno bez troškova licenciranja
Re: Hitno!!! SimpleXMLElement problem sa parsiranje XML-a 23.02.2010. u 22:13 · pre 203 meseca #5
Sadrzaj vadim sa curl

Code:

function parseXML($feedUrl) {    
    echo $feedUrl;
    $curl_handle=curl_init();
    curl_setopt($curl_handle,CURLOPT_URL,$feedUrl);
    curl_setopt($curl_handle,CURLOPT_CONNECTTIMEOUT,2);
    curl_setopt($curl_handle,CURLOPT_RETURNTRANSFER,1);
    $buffer = curl_exec($curl_handle);
    curl_close($curl_handle);
    
    @$xml = new SimpleXMLElement($buffer);

    unset($buffer);
........... i tako dalje


E sad... stavio sam echo na $buffer, i vidim da nije celi feed.

E sad... neki hint oko: Kako da vidim dali je u pitanju memory limit ili timeout? Server je linux ja sam root.
Potpis
routing protocols enable routers to route routed protocols!
Re: Hitno!!! SimpleXMLElement problem sa parsiranje XML-a 23.02.2010. u 23:05 · pre 203 meseca #6
Samo jedna konstatacija, zašto uopšte ideš sa curl, kad konstruktoru SimpleXMLElement možeš da proslediš URL do tog nekog XML fajla:
Code:
$sxe = new SimpleXMLElement('https://www.brownpapertickets.com/eventfeed/17', null, true);

A ako hoćeš pravu stvar, preporučujem ti da probaš Zend_Feed. Ovde baš imaš primer "konzumiranja" jednog RSS feed-a uz pomoć te komponente.
Re: Hitno!!! SimpleXMLElement problem sa parsiranje XML-a 24.02.2010. u 00:44 · pre 203 meseca #7
@Nikola -1, ne čitaš temu. SimpleXML se buni jer ne može da do timeouta dohvati ceo XML. Moguće da SimpleXML može da primi kontekst kao file_get_contents, ali to ne znam.

@sojic -1, ne čitaš odgovor. Problem je što server ima spor odziv, a XML je veliki. Moraš da postaviš timeout. Ako koristiš urlopen omotač moraš da ubaciš kontekst u file_get_contents koji napraviš pomoću stream_context_create(). Ako koristiš cURL onda podesiš CURLOPT_TIMEOUT za tvoj cURL easy handle.

Zend_Feed je verovatno glupost, ovi dovodi uopšte nisu u RSS formatu, a ne izgledaju ni vremenski složeni da se isplati pisanje namenskog Zend_Feed format adaptera.
Potpis
http://sr.libreoffice.org — slobodan kancelarijski paket, obrada teksta, tablice,
prezentacije, legalno bez troškova licenciranja
Re: Hitno!!! SimpleXMLElement problem sa parsiranje XML-a 24.02.2010. u 00:50 · pre 203 meseca #8
Resen problem.

Prepravio sam generiranje feedove.

Inace...

file_get_contents ne koristim posto curl je mnogo brzi (tako kazu, nisam licno testirao: http://stackoverflow.com/quest...rl-what-has-better-performance)

U svaki slucaj hvala, bilo je korisno.
Potpis
routing protocols enable routers to route routed protocols!
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme