我正在使用PHP5,它是内置的SOAP功能。我正在捕获SOAP Fault错误,并在触发一个时给自己发送电子邮件。
我真正需要做的是包含__getLastRequest()和__getLastResponse(),但是因为这些是XML对象,当我尝试通过将它们回显到我的HTML电子邮件的正文中来包含它们时,出于显而易见的原因,他们不会t完全出现。
是否有可用于将这些对象转换为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>
答案 0 :(得分:2)
您可以使用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扩展程序。
答案 1 :(得分:0)
修改强>:
xml的基本打印。您可能需要调整以适应难以阅读的实际xml,因为它是未格式化的。你还需要处理嵌套元素,我想这会要求你循环遍历子元素。如果您有任何属性,我也会考虑属性...您可以参考SimpleXML文档以获取更多详细信息。
foreach($xml->Body as $element => $value)
{
echo "$element: $children";
}
使用htmlspecialchars
或htmlentities
来编码字符串......?这样它就会在一封html电子邮件中显示为“代码”。