SimpleXML с декодированными объектами
Как я могу заставить SimpleXML заменить сущности HTML/XML их соответствующими символами в PHP?
Предположим, что этот XML-документ в строке:
$data = '<?xml version="1.0" encoding="ISO-8859-1"?><example>Tom & Jerry</example>'
Очевидно, я хочу, чтобы SimpleXml декодировал &
в &
, Он не делает это по умолчанию. Я пробовал эти два способа, ни один из которых не работал:
$xml = new SimpleXMLElement($data);
$xml = new SimpleXMLElement($data, LIBXML_NOENT);
Каков наилучший способ декодирования сущностей XML? Я думаю, XML-парсер должен это сделать, я хотел бы избежать запуска html_entity_decode
до разбора (на самом деле, это тоже не сработает). Может ли это быть проблемой с кодировкой строки? Если так, как я мог отследить и исправить это?
1 ответ
Я не знаю, будет ли это работать в некоторых случаях, но может быть...
$xml = new SimpleXMLElement(html_entity_decode($data));
http://www.php.net/manual/en/function.html-entity-decode.php