PHP SOAP Server возвращает XML без тегов

#php #xml #soap #server #tags

#php #xml #soap #сервер #Теги

Вопрос:

У меня есть следующий код сервера php:

 $xml ="<?xml version="1.0" encoding="UTF-8"?>";
$root = "Data";
$warmdata = "WarmData";
$brinedata = "BrineData";
$permindata = "PerMinData";
$xml .= "<$root>";
    $xml .= "<$warmdata>";
        foreach($result as $row)
        {
            $xml .= "<WarmIn>";
            $xml .= $row['value'] . " " . $row['time'];
            $xml .= "</WarmIn>";
        }

        foreach($result2 as $row)
        {
            $xml .= "<WarmOut>";
            $xml .= $row['value'] . " " . $row['time'];
            $xml .= "</WarmOut>";
        }
    $xml .= "</$warmdata>";

    $xml .= "<$brinedata>";
        foreach($result3 as $row)
        {
            $xml .= "<BrineIn>";
            $xml .= $row['value'] . " " . $row['time'];
            $xml .= "</BrineIn>";
        }

        foreach($result4 as $row)
        {
            $xml .= "<BrineOut>";
            $xml .= $row['value'] . " " . $row['time'];
            $xml .= "</BrineOut>";
        }
    $xml .= "</$brinedata>";

    $xml .= "<$permindata>";
        foreach($result5 as $row)
        {
            $xml .= "<WarmPerMin>";
            $xml .= $row['value'] . " " . $row['time'];
            $xml .= "</WarmPerMin>";
        }

        foreach($result6 as $row)
        {
            $xml .= "<BrinePerMin>";
            $xml .= $row['value'] . " " . $row['time'];
            $xml .= "</BrinePerMin>";
        }
    $xml .= "</$permindata>";
$xml .= "</$root>";

header ("Content-Type:text/xml");
return $xml;

$options=array('uri'=>'http://localhost/');
$server = new SoapServer(NULL,$options);
$server->setClass('DBData');
$server->handle();
  

Я пытаюсь получить правильно отформатированный вывод xml с помощью soap-клиента, но когда я запрашиваю xml, out содержит только числа, полученные из базы данных в одной строке, без фактических тегов xml.
Как я могу изменить его, чтобы у меня были теги в выходных данных?

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

1. Это функция? В противном случае возврат завершит выполнение

2. @RiggsFolly Да, это функция. Это работает, только в выходных данных отсутствуют все теги xml, и вместо этого они отображаются в одной строке.

3. Хорошо, тогда ПОКАЖИТЕ ВЕСЬ СООТВЕТСТВУЮЩИЙ КОД. Мы можем отлаживать только то, что видим, мы не ясновидящие

4. Это весь код, в начале отсутствует только имя функции и скобки.

Ответ №1:

Эти теги не разрешены. Вы должны написать их:

 < replace with amp;>
> replace with amp;<
  

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

1. Теперь это действительно просто комментарий. Пожалуйста, не комментируйте в ответе, это может привести к снижению голосов, и вы этого не хотите

2. Что вы имеете в виду? Он спрашивает, почему теги не отображаются, и я отвечаю, как он должен поместить их в свой код.

3. @WesleyDeKeirsmaeker Куда я должен их поместить?

4. Я отредактировал свой aswer. Вы должны заменить символы < и> .

5. @WesleyDeKeirsmaeker Это сработало, спасибо, но все равно весь xml отображается в одной строке. Есть ли решение для этого?