PHP XML对象到HTML友好的文本字符串?

时间:2010-01-18 13:38:29

标签: php xml

我正在使用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>

2 个答案:

答案 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";
}

使用htmlspecialcharshtmlentities来编码字符串......?这样它就会在一封html电子邮件中显示为“代码”。