1

有没有办法减少从 SOAP 响应发送到网络的字节数?我在 PHP 中使用 nuSoap,并希望在每个节点中避免 xsi:type="xsd:string", xsi:type="xsd:int" 。有没有办法做到这一点?

在此先感谢 c.

4

3 回答 3

1

如果您严格要求将有效的 SOAP 响应发送回 Flash 客户端,并且不能选择使用有效模式(这将简化输出标记),那么不,您无能为力...

但是,如果您不依赖于发送有效的 SOAP 响应,并且您的开发人员确实坚持要获得非详细标记,那么您就只能自己动手了。如果是这种情况,请继续阅读。

您可以使用通过PEAR其他一些源提供的一些现有 XML 序列化程序类。如果您想走真正的滚动您自己的路线,可以使用PHP 来帮助您直接创建有效的 XML。

不再重复其他地方所说的内容,这里有一个关于如何使用 PEAR XML_Serializer 序列化一些数据的深入示例

另一个非常简单的示例,这次它是基于 SimpleXML 的,您可以根据需要添加子元素和属性以满足所需的输出。

$xml = new SimpleXMLElement('<?xml version="1.0" standalone="yes"?>');
$ch1 = $xml->addChild("root");
$ch2 = $ch1->addChild("element");
// you obviously have no use for attributes, but I included it for completeness
$ch2->addAttribute("foo", "bar");
$ch2->addChild("subElement", "value1");

$outxml = $xml->asXML();

上面的代码会产生类似的东西:

<?xml version="1.0" standalone="yes"?>
<root>
    <element foo="bar">
         <subElement>value1</subElement>
    </element>
</root>

我希望它有所帮助。

于 2010-08-02T08:40:02.263 回答
0

执行此操作的常用方法是在 HTTP 层中启用压缩。如果您想确保始终压缩数据,您甚至可以拒绝未压缩的 SOAP 请求。(一个流行的软件问答网站就是这样做的。)

于 2010-07-27T10:44:04.727 回答
0

在传输过程中删除空格并 gzip 内容。

header('Content-Encoding: gzip');
$xml=new DOMDocument($soap);
$xml->preserveWhiteSpace(FALSE);
echo $xml->saveXML();
于 2010-08-02T16:41:45.840 回答