Ответ cURL в XML - ошибка Simplexml_load_string - PullRequest
1 голос
/ 17 июня 2011

Я делаю запрос cURL в аутентифицированную область, которая работает нормально; и при повторении ответа все выглядит хорошо, за исключением первой части. Это мой точный ответ (тэг otherData заменяет мои фактические данные).

 <?xml version='1.0' encoding='UTF-8'?>
    <Response xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
        <ResponseStatus>
           <StatusCode>0</StatusCode>
           <StatusMessage>Success</StatusMessage>
        </ResponseStatus>
        <otherData></otherData>
    </Response>

Посмотрите, как xml version = '1.0' encoding = 'utf-8', а затем мы переключаемся на использование "в реальном XML? мог бы просто сделать str_replace, однако это не совсем понимает всю проблему здесь.

Ответы [ 2 ]

1 голос
/ 17 июня 2011

Можем ли мы увидеть ваш php код? Я бегу:

<?php
    $xml_string =<<<XML
<?xml version='1.0' encoding='UTF-8'?>
<Response xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <ResponseStatus>
       <StatusCode>0</StatusCode>
       <StatusMessage>Success</StatusMessage>
    </ResponseStatus>
    <otherData></otherData>
</Response>
XML;

$xml_obj = simplexml_load_string($xml_string);
echo $xml_obj->ResponseStatus->StatusMessage."\n";
?>

И, кажется, работает нормально.

0 голосов
/ 17 июня 2011

попробуйте заменить все " на '.

$string = str_replace("\"", "'", $string);

Строка закрывается в двойных кавычках.

Итак, строка печатается как

$string = "<?xml version='1.0' encoding='UTF-8'?><Response xmlns:xsi=", поэтому очевидно, что использование str_replace() превратит " в ', что приведет к правильному выводу строки.

...