xml — анализирует CDATA с тегом внутри, используя переполнение стека XMLReader

Мне нужно проанализировать файл XML, который содержит тег CDATA. Внутри этого тега есть еще один тег, который я хочу получить. Как я могу добиться этого с помощью XMLReader?

Пример:

<glz:Param name="TITLE">
<![CDATA[Yellow <http://www.yellow.it>]]>
</glz:Param>

Как я могу получить всю информацию Yellow <http://www.yellow.it>? Я могу получить только «Желтый».

Это мой код:

// load file, create a reader variable, etc.
if($reader->nodeType == XMLReader::CDATA)
{
echo $reader->value;
}

0

Решение

Согласно вашим комментариям:

Вероятно, проблема в том, что XmlReader правильно извлекает все содержимое тега CDATA, но ваш браузер снова интерпретирует его как html. Проверьте источник страницы, чтобы увидеть, содержит ли он элемент a. Если так, попробуйте

echo htmlentities($reader->value);

или отправьте заголовок с типом содержимого: text / plain.

1

Другие решения

Вы можете получить это путем поиска строки. Как видите, строка «http://www.yellow.it]]>» не является XML, поэтому вы не можете ее проанализировать с помощью XMLReader.
Пожалуйста, найдите строку на нем.
Например, вы можете разделить строку как «http:», и вы можете получить 2 подстроки.
Со второй строки вы можете получить полную ссылку без «>]]>».

Надеюсь, это будет полезно.

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector