PHP XML объект в HTML дружественный текстовую строку? - PullRequest
1 голос
/ 18 января 2010

Я использую PHP5, и это встроенная функциональность SOAP. Я улавливаю ошибки SOAP Fault и отправляю электронное письмо самому, когда он срабатывает.

Что мне действительно нужно сделать, так это включить __getLastRequest () и __getLastResponse (), однако, поскольку это XML-объекты, когда я пытаюсь включить их, повторяя их в теле моего электронного письма по понятным причинам, т появляются полностью.

Есть ли функция или класс, который я могу использовать для преобразования этих объектов в HTML-дружественную строку?

Я гуглил это, но безо всякой радости. Если возможно, я бы хотел не использовать класс, внешний по отношению к собственным функциям PHP, но если потребуется, мне придется.

РЕДАКТИРОВАНИЕ:

Как мне отформатировать следующий XML, чтобы он дал мне версию с отступом для браузера?

<?xml version="1.0" encoding="UTF-8"?><SOAP-ENV:Envelope xmlns:SOAP-ENV="schemas.xmlsoap.org/soap/envelope/"; xmlns:ns1="example.com/"><SOAP-ENV:Body><ns1:Ad… 0NE</ns1:Postcode><ns1:BuildingName></ns1:BuildingName><ns1:BuildingNo></ns1:BuildingNo><ns1:SubBuilding></ns1:SubBuilding><ns1:Organisation></ns1:Organisation><ns1:Street></ns1:Street><ns1:SubStreet></ns1:SubStreet><ns1:Town></ns1:Town><ns1:District></ns1:District></ns1:address><ns1:AccountName>admin@xxx.co.uk</ns1:AccountName><ns1:Password>password</ns1:Password></ns1:AddressLookupUK></SOAP-ENV:Body></SOAP-ENV:Envelope>

Ответы [ 2 ]

2 голосов
/ 20 января 2010

Вы можете использовать http://www.php.net/manual/en/book.tidy.php, например:

<?php
$xml = '<?xml version="1.0" encoding="UTF-8"?>...</SOAP-ENV:Envelope>';
$config = array(
            'indent'         => true,
            'output-xml'     => true,
            'input-xml'     => true,
            'wrap'         => '1000');

// Tidy
$tidy = new tidy();
$tidy->parseString($xml, $config, 'utf8');
$tidy->cleanRepair();
echo tidy_get_output($tidy);
?>

, но сначала необходимо установить расширение php.

0 голосов
/ 18 января 2010

EDIT

Основная распечатка из xml. Возможно, вам придется настроить его так, чтобы он соответствовал фактическому xml, который было трудно прочитать, поскольку он был опубликован в неотформатированном виде. Вы также должны обрабатывать вложенные элементы, которые, я полагаю, потребовали бы, чтобы вы перебирали дочерние элементы. и я полагаю, атрибуты, если у вас есть ... Вы можете обратиться к документации SimpleXML для более подробной информации по этому вопросу.

foreach($xml->Body as $element => $value)
{
  echo "$element: $children";
}

Умм, используйте htmlspecialchars или htmlentities для кодирования строки ...? таким образом он будет отображаться как «код» в HTML-письме.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...