whatslve
@whatslve
Marketing

Почему simplexml_load_string() не понимает валидную строку с xml?

Есть строка с xml, это ее вардамп
string(941) "<?xml version="1.0"?><stats><breakdown date="2020-02-26"><responses>690292</responses><impressions>103203</impressions><revenue>142.1773</revenue></breakdown><breakdown date="2020-02-27"><responses>679646</responses><impressions>105329</impressions><revenue>60.7610</revenue></breakdown><breakdown date="2020-02-28"><responses>908865</responses><impressions>136551</impressions><revenue>68.2343</revenue></breakdown><breakdown date="2020-02-29"><responses>1268946</responses><impressions>248969</impressions><revenue>91.9452</revenue></breakdown><breakdown date="2020-03-01"><responses>926947</responses><impressions>195786</impressions><revenue>85.0645</revenue></breakdown><breakdown date="2020-03-02"><responses>528795</responses><impressions>67999</impressions><revenue>46.4714</revenue></breakdown><breakdown date="2020-03-03"><responses>903159</responses><impressions>124702</impressions><revenue>100.8346</revenue></breakdown></stats>"

Функция simplexml_load_string($this->xml); отдает ошибку
$this->xml = simplexml_load_string($this->xml);

Ошибка:
Fatal error: Uncaught Exception: String could not be parsed as XML

Xml проверял валидатором все ок, помогите с решением, гуглил не нашел либо не правильно гуглил, мб флаг какой нужен или предварительно что-то сделать?
  • Вопрос задан
  • 610 просмотров
Решения вопроса 1
@Nc_Soft
У меня всё работает
<?php
$string = '<?xml version="1.0"?><stats><breakdown date="2020-02-26"><responses>690292</responses><impressions>103203</impressions><revenue>142.1773</revenue></breakdown><breakdown date="2020-02-27"><responses>679646</responses><impressions>105329</impressions><revenue>60.7610</revenue></breakdown><breakdown date="2020-02-28"><responses>908865</responses><impressions>136551</impressions><revenue>68.2343</revenue></breakdown><breakdown date="2020-02-29"><responses>1268946</responses><impressions>248969</impressions><revenue>91.9452</revenue></breakdown><breakdown date="2020-03-01"><responses>926947</responses><impressions>195786</impressions><revenue>85.0645</revenue></breakdown><breakdown date="2020-03-02"><responses>528795</responses><impressions>67999</impressions><revenue>46.4714</revenue></breakdown><breakdown date="2020-03-03"><responses>903159</responses><impressions>124702</impressions><revenue>100.8346</revenue></breakdown></stats>';
$xml =  simplexml_load_string($string);
var_dump($xml->breakdown);
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@anikavoi
А что в системе установлено в качестве десятичного разделителя?
У меня как-то была похожая ситуация, и там стояла разделитель-запятая, поэтому парсер считал числа невалидными, и соответственно не мог признать валидным строку.
Ответ написан
Попробуй удалить <?xml version="1.0"?>
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы