VerbAlexVlad
@VerbAlexVlad
Программист-любитель

Как через xml_parse получить все значение в теге?

Есть товары в xml
<offer id="11111" type="vendor.model" available="false">
        <delivery>true</delivery>
        <model>Model</model>
        <description>Товар такой-то — и тут его длинное описание.
Сезон: демисезон/лето</description>
        <param name="Размер" unit="RU">40</param>
        <param name="Пол">Мужской</param>
        <param name="Сезон">Демисезон</param>
      </offer>


Все парсит хорошо, кроме поля description. На выходе получаю либо только пару первых символов или слов, либо до первого пробела....

В данном случае получу "Товар такой-то" и все, остальная часть строки обрезается...

Как с этим бороться?

$parser = xml_parser_create('UTF-8');
    xml_set_element_handler($parser,
        function ($parser, $name, $attrs) {
            switch ($name) {
                case "DESCRIPTION":
                    $this->product_description_true = true;
                    break;
            }
        },
        function ($parser, $name) {
            switch ($name) {
                case "DESCRIPTION":
                    $this->product_description_true = false;
                    break;
            }
        }
    );
    xml_set_character_data_handler($parser,
        function ($parser, $data) {
                ...
                if ($this->product_description_true) {
                    $this->xml_products[$this->index_product]['description'] = $data;
                }
                ...
        }
    );
    
    $remove = file_get_contents(stripslashes('http://....xml'));
    
    // Удаление символов в тексте
    $remove = str_replace(array("&amp;", "&"), array("&", "&amp;"), $remove);
    
    xml_parse($parser, $remove, true);
    xml_parser_free($parser);
  • Вопрос задан
  • 103 просмотра
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы