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
Форумы портала PHP.SU :: Версия для печати :: SimpleXMLElement не преобразовывает XML
Форумы портала PHP.SU » » Вопросы новичков » SimpleXMLElement не преобразовывает XML

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

1. grafillo - 04 Января, 2015 - 18:37:02 - перейти к сообщению
Есть XML
CODE (htmlphp):
скопировать код в буфер обмена
  1. <xml><bot login="BOT2" select_room="гогого" id_unreg_user="">SharaBot</bot></xml>

пердаётся методом пост в пхп
PHP:
скопировать код в буфер обмена
  1.  
  2. $req = $_POST['xml'];
  3. $xml  = new SimpleXMLElement($req);  
  4.  

$xml = new SimpleXMLElement($req); - вот эта строчка не работает, причём она не работает только когда xml передаётся методом пост, в чём ошибка?
2. caballero - 05 Января, 2015 - 00:11:03 - перейти к сообщению
значит не такая строка передается

попробуй убрать русские буквы
3. grafillo - 05 Января, 2015 - 09:15:30 - перейти к сообщению
строка передаётся именно такая я проверил, я русские буквы мне нужны как мне их убрать то?
4. skiphog - 05 Января, 2015 - 10:02:22 - перейти к сообщению
Скорее всего проблема в кодировке.
Попробуйте
PHP:
скопировать код в буфер обмена
  1. $req = iconv('cp1251','utf-8',$_POST['xml']);
  2. $xml = new SimpleXMLElement($req);
5. caballero - 05 Января, 2015 - 10:15:55 - перейти к сообщению
[quote=grafillo][/quote]
ты совсем тупой?
убрать русские буквы надо чтобы убедится что проблема именно в кодировке.

чтобы решать вопрос сначала нужно найти причину а не плодить десяток тем надеясь на чудо и расказывать фантастику что пост портит xml.

проверь что работает без русских букв.
если работает, что скорее всего, тогда надо с кодировками разбираьтся.
например перевести страницу в UTF-8
6. Мелкий - 05 Января, 2015 - 11:32:54 - перейти к сообщению
caballero пишет:
расказывать фантастику что пост портит xml.

Или проверить, наконец, не включена ли какая глупость вроде магических кавычек. XML поломает только в путь.
7. grafillo - 05 Января, 2015 - 11:44:17 - перейти к сообщению
пишет ошибку
Fatal error: Uncaught exception 'Exception' with message 'String could not be parsed as XML' in C:\HomServ\home\troll_ch\php\boten.php:21 Stack trace: #0 C:\HomServ\home\troll_ch\php\boten.php(21): SimpleXMLElement->__construct('') #1 {main} thrown in C:\HomServ\home\troll_ch\php\boten.php on line 21
как я и говорил надо преобразовать както содержание post в xml
(Добавление)
кароч если передаю хмл без атрибутов
CODE (htmlphp):
скопировать код в буфер обмена
  1. xml><bot ><login>Пипка</login><room>ааапп</room></bot></xml>

тогда всё норм работает
как только отправляю xml с атрибутами
CODE (htmlphp):
скопировать код в буфер обмена
  1. <xml><bot id="3"><name>ыыы</name><room>room</room></bot></xml>

, сразу выдаётся ошибка
Warning: SimpleXMLElement::__construct() [simplexmlelement.--construct]: <xml><bot id=\"3\"><name>ыыы</name><room>room</room></bot></xml> in C:\HomServ\home\troll_ch\php\boten.php on line 18
то есть кароч методом пост толи кавычки плохо передаются толи что не пойму, вообщем атрибуты использовать нельзя чтоли?
8. Мелкий - 05 Января, 2015 - 13:30:18 - перейти к сообщению
Ответ в теме уже озвучен.
9. grafillo - 05 Января, 2015 - 14:12:10 - перейти к сообщению
Мелкий пишет:
Ответ в теме уже озвучен.

куда смотреть?
в упор не вижу(((
10. esterio - 05 Января, 2015 - 14:19:41 - перейти к сообщению
grafillo
вам как всегда по два раза обьяснять надо?
PHP:
скопировать код в буфер обмена
  1. $req= '<xml><bot login="abrakadabra" select_room="abrakadabra" id_unreg_user="">SharaBot</bot></xml>';
  2. $xml  = new SimpleXMLElement($req);
  3. var_dump($xml);

суть в том чтобы временно убрать кирилицу з xml для проверки версии о кодировке.
если сейчас не понятно то я уже не знаю как по другому обьяснить
11. grafillo - 05 Января, 2015 - 15:15:50 - перейти к сообщению
esterio пишет:
grafillo
вам как всегда по два раза обьяснять надо?
PHP:
скопировать код в буфер обмена
  1. $req= '<xml><bot login="abrakadabra" select_room="abrakadabra" id_unreg_user="">SharaBot</bot></xml>';
  2. $xml  = new SimpleXMLElement($req);
  3. var_dump($xml);

суть в том чтобы временно убрать кирилицу з xml для проверки версии о кодировке.
если сейчас не понятно то я уже не знаю как по другому обьяснить


да всё нормально работает с кирилицей и с латиницей пока не использую атрибуты, как только ставлю какой-нибудь атрибут сразу выскакивает ошибка, пишу ж )
там проблемы толи в кавычках толи в чём(((

 

Powered by ExBB FM 1.0 RC1