Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> konstrukcja try catch i błędny xml
aladin07
post
Post #1





Grupa: Zarejestrowani
Postów: 68
Pomógł: 0
Dołączył: 22.07.2007

Ostrzeżenie: (0%)
-----


witam

mam problem w jaki sposob z uzyciem konstrukcji try catch napisac skrypt
ktory w razie napotkania bledu podczas parsowania xmlreaderem nie bedzie sie
wywalal tylko pominie mi tego blednego xml'a (bo jest ich kilka tys.)

na razie mam konstrukcje w stylu

  1. try
  2. {
  3.  
  4. if(file_exists("temp.xml"))
  5. {
  6. $xml = new XMLReader();
  7. $xml->open("temp.xml");
  8. while($xml->read())
  9. {
  10. // tutaj dalsze zadania zwiazane z obsluga tego xml'a
  11. }
  12. throw new Exception( 'problem!' );
  13. }
  14. }
  15. catch (Exception $e)
  16. {
  17. echo $e;
  18. }
  19. // dalsza czesc skryptu


nie mniej jednak mimo wszystko przy blednym xml'u z jakim mam doczynienia
dostaje i tak komunikat

XMLReader::read() [function.XMLReader-read]: input conversion failed due to input error, bytes 0x81 0x4F 0xC5 0xBB

czy ja cos robie zle? moze w jakis inny sposob nalezy oblsuzyc taki wyjatek
moze w jakis inny sposob mozna wczesniej sprawdzic poprawnosc xml'a zeby ominac ten blad
wziasc sie za kolejny plik
z gory dzieki za wszelkie podpowiedzi
pozdrawiam
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
wookieb
post
Post #2





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Faktycznie isValid nie sprawdza całego drzewa. Wieć wystarczy po prostu skorzystać z read() by wyłapać czy czy xml jest błędny.
Zrób sobie funkcję, która będzie parsowała xmla i jeżeli będzie błędny to zwróci false, jeżeli będzie ok to zwróci jego treść. Taki jest raczej najprostszy sposób.

Dodatkowo spróbuj podać kodowanie xmla (drugi atrybut czy open()), może rozwiąże twój problem. Jeżeli nie wypuśc tego xmla to potestujemy.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 7.10.2025 - 18:21