![]() |
![]() |
![]() ![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 8.03.2011 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
Witajcie!
Mam taki XML:
Gdy próbuję go wczytać za pomocą XMLReader przy pomocy takiego kodu:
oczywiście po dojściu do znaku & wywala mi się. Wypisując błędy:
linia 55 w kodzie to
a linia 1274 to
Od dwóch dni próbuję sobie z tym poradzić i nie mogę... Nie mam wpływu na to, że w XMLu zamiast jest . W jaki sposób sobie z tym poradzić. Gdy ręcznie podmieniłem na wszystko ziała jak talala... tylko, że ręczna zabawa odpada, bo pliczek XML ma być importowany automatycznie z serwera co 15 minut... W jaki sposób "podmienić" na w ciągu tak aby XMLReader się nie wysypywał. To samo dotyczy innych zabronionych znaków wymienionych tutaj link. No i jak postąpić gdy dajmy na to część znaków w pliku jest poprawnie zamieniona na , żeby po podmianie nie wyszło nam
Programistą nie jestem, a bawię się w php dla frajdy... Do tej pory wyprodukowałem coś takiego: http://boinc.pl/stats A omawiany problem, powstrzymuje mnie przed dodaniem statystyk wyścigowych... Ten post edytował TomaszPawel 20.12.2011, 13:16:57 |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 1 366 Pomógł: 261 Dołączył: 23.09.2008 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
A nie masz wpływu na generowany plik XML ?
-------------------- |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 306 Pomógł: 42 Dołączył: 25.03.2010 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Znaki specjalne i encje powinieneś umieścić w CDATA przy generowaniu takiego dokumentu.
http://www.w3schools.com/xml/xml_cdata.asp edit: nie doczytałem, że nie możesz zmieniać tego. Ten post edytował qrooel 20.12.2011, 13:50:33 -------------------- Strony WWW: http://arscreo.pl
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Przecież napisał, że nie ma wpływu na xml....
użyj str_replace i po sprawie Cytat No i jak postąpić gdy dajmy na to część znaków w pliku jest poprawnie zamieniona na [XML] pobierz, plaintext & , żeby po podmianie nie wyszło nam [XML] pobierz, plaintext && albo & To też użyj str_replace, tylko najpierw jedno str_replace, które zamienie na & a potem już to prawidłowe str_replace, gdzie bedziesz zamieniał niedozwolone znaki na encje. -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 8.03.2011 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
A konkretnie to jakbyś to zaimplementował?
|
|
|
![]()
Post
#6
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Za bardzo nie ma tu co implementować, tylko normalnie po ludzku użyć
http://pl.php.net/manual/en/function.str-replace.php -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 1 332 Pomógł: 294 Dołączył: 12.10.2008 Skąd: Olkusz Ostrzeżenie: (0%) ![]() ![]() |
po testuj to - wygląda, że działa a nie mam czasu bawić się:
Kod $text = 'daf a& &asd;ŕ&11 co &'; $pattern = '/(?!&#[0-9]+;|&[a-z]+;)&/'; $replace = '&'; echo preg_replace($pattern, $replace, $text); code gdyż przy php zastępuje symbolem specjalnym jak wpisuję w styl "& # 1343;" - bez spacji - ale w code też widzę lipa ;p Ten post edytował zegarek84 20.12.2011, 14:51:09 -------------------- Jeśli twoja ręka rusza do przodu powstrzymaj swój gniew; gdy wyprzedza cię twój gniew - wycofaj rękę.
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 29.06.2025 - 16:55 |