有没有办法减少从SOAP响应发送到网络的字节数?我在PHP中使用nuSoap,并希望在每个节点中避免使用xsi:type =“xsd:string”,xsi:type =“xsd:int”。 有办法吗?
提前致谢 角
答案 0 :(得分:1)
如果您严格依赖于将有效的SOAP响应发送回Flash客户端,并且如果使用有效的架构不是一个选项(这将简化输出标记),那么不,您无法对其做任何事情< /强> ...
但是,如果您不依赖于发送有效的SOAP响应,并且您的开发人员确实坚持要获得非详细标记,那么您可以选择自行编写。如果是这种情况,请继续阅读。
您可以使用PEAR或some other source提供的一些现有XML Serializer类。如果您想沿着Trully-Roll-Your-Own路线走下去,可以PHP classes来帮助您直接创建有效的XML。
不要重复其他地方所说的here's in-depth example about how to serialize some data using 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>
我希望它有所帮助。
答案 1 :(得分:0)
执行此操作的常用方法是在HTTP层中启用压缩。如果要确保始终压缩数据,甚至可以拒绝未压缩的SOAP请求。 (A popular software Q&A site这样做。)
答案 2 :(得分:0)
删除空格并在传输过程中对内容进行gzip。
header('Content-Encoding: gzip');
$xml=new DOMDocument($soap);
$xml->preserveWhiteSpace(FALSE);
echo $xml->saveXML();