Мне нужно проанализировать файл 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;
}
Согласно вашим комментариям:
Вероятно, проблема в том, что XmlReader правильно извлекает все содержимое тега CDATA, но ваш браузер снова интерпретирует его как html. Проверьте источник страницы, чтобы увидеть, содержит ли он элемент a. Если так, попробуйте
echo htmlentities($reader->value);
или отправьте заголовок с типом содержимого: text / plain.
Вы можете получить это путем поиска строки. Как видите, строка «http://www.yellow.it]]>» не является XML, поэтому вы не можете ее проанализировать с помощью XMLReader.
Пожалуйста, найдите строку на нем.
Например, вы можете разделить строку как «http:», и вы можете получить 2 подстроки.
Со второй строки вы можете получить полную ссылку без «>]]>».
Надеюсь, это будет полезно.