2013-04-18 4 views
0

я создаю объект XML с помощью PHP SimpleXMLElementSimpleXmlElement специальные символы в XML

У меня есть полный XML в $RAWResponse, поэтому я использую

$oXMLResponse = new SimpleXMLElement($RAWresponse); 

XML, я получаю происходит от WebService , Я обнаружил, что XML содержит недопустимые символы, например, «&».

Существует много сообщений об этой проблеме, но никто не работает. Я пробовал htmlentities(), но это ускользает от каждого символа, включая «<» и «>», открывая и вставляя XML-элементы.

Наконец я использовал эту функцию:

$some_special_chars = array("&"); 
$replacement_chars = array("&amp;"); 
$RAWresponse = str_replace($some_special_chars, $replacement_chars, $RAWresponse); 

$oXMLResponse = new SimpleXMLElement($RAWresponse); 

Это работает, но это глупое решение, потому что он сломается, если я получу какой-либо другой специальный полукокс. Есть ли лучшее решение? Я не могу понять, почему SimpleXMLElement ломается, он должен только показывать предупреждение или что-то еще.

+0

Перед тем, как задать вопрос, используйте любой из существующих ответов на свой вопрос. Если все это не сработает для вас, сделайте видимым в своем вопросе, какие решения вы пробовали до сих пор и почему они не применяются в вашем случае. – hakre

ответ

1

Это невозможно с использованием встроенного расширения SimpleXML PHP (или даже расширения DOM). Вы должны либо заменить все недопустимые символы соответствующими объектами, либо запросить, чтобы поставщик веб-служб возвращал действительный XML.

Смежные вопросы