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

Рейтинг: 0Ответов: 0Опубликовано: 21.02.2023

Есть товары в 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);

Ответы

Ответов пока нет.