Результат Echo xml из службы wcf в php?

#php #wcf

#php #wcf

Вопрос:

У меня есть операция WCF GetColors, которая возвращает список цветов как GetColorsResult. Я получаю результат нормально, но как мне выполнить цикл GetColorsResult в php и повторить каждый элемент?

Я делаю:

 <?php

header('Content-Type: text/plain');

echo "WCF Testrnrn";

// Create a new soap client based on the service's metadata (WSDL)
$client = new SoapClient('http://localhost:8181/Colors.svc?wsdl',array(
                         'login' => "test", 'password' => "test"));


 $retval = $client->GetColors();


 //Need to loop throuh $retval here

 echo $retval->GetColorsResu< //This throws error.




?>
  

Есть ли способ управлять именем результата, например, я не указывал WCF для возврата GetColorsResult, он добавлял результат к моему вызову метода. Аналогично, он добавляет ответ в GetColors для ответа (GetColorsResponse)

Вывод при выполнении print_r($ retval):

 stdClass Object
(
    [GetColorsResult] => stdClass Object
        (
            [Color] => Array
                (
                [0] => stdClass Object
                    (
                        [Code] => 1972
                        [Name] => RED
                    )

                [1] => stdClass Object
                    (
                        [Code] => 2003
                        [Name] => BLUE
                    )

                [2] => stdClass Object
                    (
                        [Code] => 2177
                        [Name] => GREEN
                    )
               )
          )
      )
  

Комментарии:

1. Возможно, вы захотите добавить часть кода, который у вас уже есть … (кстати, не уменьшал голоса)

2. Я буду рад добавить код. Не знаю, почему понижающий голос, я не знаком с php.

3. Не могли бы вы попробовать print_r ($ retval) и опубликовать результат тоже?

4. @TerrenceJackson, я обновил свой пост, чтобы показать результаты print_r ($ retval)

Ответ №1:

что касается вашего print_r, это должно дать вам все значения:

 <?php
$colorResult = $retval->GetColorsResu<
foreach($colorResult->Color as $color){
  echo $color->Code . " " . $color->Name . "<br />";
}
?>
  

это то, что вам было нужно?

BR,

TJ

Редактировать: Если вам это нужно просто для целей отладки, вы должны использовать print_r . Посмотрите здесь: print_r Документация по PHP

Комментарии:

1. Я сделал именно то, что вы сказали, и это не выдает ошибку, а просто выводит 11223330000, но я просто делаю: echo $ color->Name «<br/>»

2. Я удалил <br /> и это сработало, но теперь все находится в одной строке.

3. Я должен был сделать . вместо для конкатенации. Спасибо.

4. <br/> является ли разрыв строки в html. Что именно вы хотите для вывода? Что-то вроде <Name> <Имя> или <Name>;<Name>

5. Я исправил это, но я должен был сделать. вместо