Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: simplexml_load_string() ругается на теги, которых не существует

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Oskaria
Отправлено: 11 Февраля, 2013 - 09:01:17
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Окт. 2012  


Помог: 0 раз(а)




Приветствую.

Суть такая - при обработке большого файла, я достаю из него части, написанные на xml и загружаю их через simplexml_load_string().
Проблема в том, что из 100 (плюс-минус) загрузок, функция некоторые не загружает, ругаясь:

Цитата:

Warning: simplexml_load_string() [function.simplexml-load-string]: Entity: line 2: parser error : Opening and ending tag mismatch: information line 2 and user in C:\AppServ\www\test1.ru\xml\index.php on line 358

Warning: simplexml_load_string() [function.simplexml-load-string]: <information> </user> in C:\AppServ\www\test1.ru\xml\index.php on line 358

Warning: simplexml_load_string() [function.simplexml-load-string]: ^ in C:\AppServ\www\test1.ru\xml\index.php on line 358

Warning: simplexml_load_string() [function.simplexml-load-string]: Entity: line 3: parser error : Extra content at the end of the document in C:\AppServ\www\test1.ru\xml\index.php on line 358

Warning: simplexml_load_string() [function.simplexml-load-string]: <service id="1614"> in C:\AppServ\www\test1.ru\xml\index.php on line 358

Warning: simplexml_load_string() [function.simplexml-load-string]: ^ in C:\AppServ\www\test1.ru\xml\index.php on line 358


Казалось бы всё просто, но ошибок в тегах XML нет. Не существует тега user или </user>, для <service id="1614"> есть закрывающий тег, внутри него тоже всё нормально, без ошибок.

Этот кусок XML:
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. <xml version="1.0" encoding="UTF-8">
  3.     <information>    
  4.      <service id="1614">
  5.         <name>"п-п¦п° п-п¦п¦п¦яLп+п+пTя¦"</name>
  6.         <login>"4959886896"</login>
  7.         <tariff id="314">
  8.             <name>"п-п¦я¦п©п¦п¦я-п+п¦я¦ п°п+я¦п¦п¦п¦ - п-я-п+п©п¦п¦п¦п+п+ - п¦я-п¦п+п¦п¦я-я-п+я-п¦"</name>
  9.             <type>"3"</type>
  10.         <category id="1001">
  11.           <name>"пёя¦п¦я¬пЁпT п¦п+я¬я-я-пTпTп+п+п+п¦п+п¦ я-п¦п¦п¦яLп+п+п+п+п¦ я¦п¦я¦пTпT 4959886896"</name>
  12.           <amount>"95.52"</amount>
  13.           <volume>"48"</volume>
  14.         </category>
  15.         </tariff>
  16.     </service>
  17.      <service id="1615">
  18.         <name>"п-п¦п° п-п¦п¦п¦яLп+п+пTя¦"</name>
  19.         <login>"4959886895"</login>
  20.         <tariff id="314">
  21.             <name>"п-п¦я¦п©п¦п¦я-п+п¦я¦ п°п+я¦п¦п¦п¦ - п-я-п+п©п¦п¦п¦п+п+ - п¦я-п¦п+п¦п¦я-я-п+я-п¦"</name>
  22.             <type>"3"</type>
  23.         <category id="1001">
  24.           <name>"пёя¦п¦я¬пЁпT п¦п+я¬я-я-пTпTп+п+п+п¦п+п¦ я-п¦п¦п¦яLп+п+п+п+п¦ я¦п¦я¦пTпT 4959886895"</name>
  25.           <amount>"726.35"</amount>
  26.           <volume>"365"</volume>
  27.         </category>
  28.         <category id="1003">
  29.           <name>"пёя¦п¦я¬пЁпT п+п¦пTп¦я¬пЁп+я-п+п¦п+п¦п¦ я-п¦п¦п¦яLп+п+п+п+п¦ я¦п¦я¦пTпT 4959886895"</name>
  30.           <amount>"94.4"</amount>
  31.           <volume>"55140.66"</volume>
  32.         </category>
  33.         </tariff>
  34.     </service>
  35.      <service id="1616">
  36.         <name>"п-п¦п° п-п¦п¦п¦яLп+п+пTя¦"</name>
  37.         <login>"4959888704"</login>
  38.         <tariff id="314">
  39.             <name>"п-п¦я¦п©п¦п¦я-п+п¦я¦ п°п+я¦п¦п¦п¦ - п-я-п+п©п¦п¦п¦п+п+ - п¦я-п¦п+п¦п¦я-я-п+я-п¦"</name>
  40.             <type>"3"</type>
  41.         <category id="1001">
  42.           <name>"пёя¦п¦я¬пЁпT п¦п+я¬я-я-пTпTп+п+п+п¦п+п¦ я-п¦п¦п¦яLп+п+п+п+п¦ я¦п¦я¦пTпT 4959888704"</name>
  43.           <amount>"845.75"</amount>
  44.           <volume>"425"</volume>
  45.         </category>
  46.         <category id="1002">
  47.           <name>"пёя¦п¦я¬пЁпT п+п¦пTп¦я¬п+п¦я-п+п¦п+п+п¦ я-п¦п¦п¦яLп+п+п+п+п¦ я¦п¦я¦пTпT 4959888704"</name>
  48.           <amount>"346.8"</amount>
  49.           <volume>"6038"</volume>
  50.         </category>
  51.         <category id="1003">
  52.           <name>"пёя¦п¦я¬пЁпT п+п¦пTп¦я¬пЁп+я-п+п¦п+п¦п¦ я-п¦п¦п¦яLп+п+п+п+п¦ я¦п¦я¦пTпT 4959888704"</name>
  53.           <amount>"398.76"</amount>
  54.           <volume>"55225.66"</volume>
  55.         </category>
  56.         </tariff>
  57.     </service>
  58.      <service id="1617">
  59.         <name>"п-п¦п° п-п¦п¦п¦яLп+п+пTя¦"</name>
  60.         <login>"4957390259"</login>
  61.         <tariff id="314">
  62.             <name>"п-п¦я¦п©п¦п¦я-п+п¦я¦ п°п+я¦п¦п¦п¦ - п-я-п+п©п¦п¦п¦п+п+ - п¦я-п¦п+п¦п¦я-я-п+я-п¦"</name>
  63.             <type>"3"</type>
  64.         <category id="1001">
  65.           <name>"пёя¦п¦я¬пЁпT п¦п+я¬я-я-пTпTп+п+п+п¦п+п¦ я-п¦п¦п¦яLп+п+п+п+п¦ я¦п¦я¦пTпT 4957390259"</name>
  66.           <amount>"1297.48"</amount>
  67.           <volume>"652"</volume>
  68.         </category>
  69.         <category id="1003">
  70.           <name>"пёя¦п¦я¬пЁпT п+п¦пTп¦я¬пЁп+я-п+п¦п+п¦п¦ я-п¦п¦п¦яLп+п+п+п+п¦ я¦п¦я¦пTпT 4957390259"</name>
  71.           <amount>"126.68"</amount>
  72.           <volume>"55258.66"</volume>
  73.         </category>
  74.         </tariff>
  75.     </service>
  76. </information>
  77.  

Не смотрите на иероглифы - скрипт под юниксовую консоль запустил в браузере

Собственно вопрос) Сталкивался ли кто-то с таким поведением simplexml_load_string()? Как можно бороться?
 
 Top
DeepVarvar Супермодератор
Отправлено: 11 Февраля, 2013 - 12:39:56
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Oskaria пишет:
encoding="UTF-8"
Что-то говорит вам?
Судя по кракозяблам, там исходная даже не цп-1251 Не понял
Ну и как бы вы должны знать что не-утф будет давать ошибки.
 
 Top
Oskaria
Отправлено: 11 Февраля, 2013 - 12:49:52
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Окт. 2012  


Помог: 0 раз(а)




Просто страница выводится в KOI8-R, а обрабатываемый файл в UTF-8 и сам файл со скриптом тоже в UTF-8.

Когда были проблемы с кодировкой, парсер ругался, что-то типа "The symbol do not found in UTF-8 encoding". Как-то так.

Проблема, к слову, чуть изменилась) Добавил в код костыль: str_ireplace("<user>", "", $xmlstr);, теперь стал ругаться, что <information> не имеет закрывающего тега.

Фигня какая-то)
 
 Top
DelphinPRO
Отправлено: 11 Февраля, 2013 - 13:09:17
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




как насчет того, чтобы сделать echo данных, передаваемых в simplexml_load_string, непосредственно перед вызовом, и посмотреть, что туда передается в реальности?


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« XML и его обработка »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB