打包回家 | 报告新错误 | 新建搜索 | 发展路线图 状态:正常开放 | 反馈 | 全部 | 自版本0.14.0起关闭

错误#1312 使用嵌套数组进行错误的XML分析
提交: 2004年4月29日10:31 UTC
发件人: 埃里克·多特·西塔尔在拉普斯特·多特网 分配:
状态: 正常开放 包裹: 肥皂
PHP版本: 4.3.4 操作系统: Linux操作系统
路线图: (未分配)    
订阅  


 [2004-04-29 10:31 UTC]eric dot citaire在laposte dot-net
描述:------------当向PEAR::SOAP WebService发送嵌套数组时,一些元素是对象,而不是数组。复制代码:---------------我的PHP代码:<?php(电话)// ...//下面是方法声明:$this->__typedef['{urn:something}Array']=数组(数组('item'=>'anyType'));$this->__dispatch_map['test']=数组('in'=>数组('aArray'=>'{urn:something}array'));// ...?>客户端发送的XML代码:<?xml version=“1.0”encoding=“utf-8”?><SOAP-ENV:Envelope xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance"xmlns:xsd=“http://www.w3.org/2001/XMLSchema"xmlns:SOAP-ENV=“网址:http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Body xmlns:ns1=“urn:something”><ns1:test SOAP-ENV:encodingStyle=“http://schemas.xmlsoap.org/soap/encoding网址/"><anArray soapenc:arrayType=“xsd:anyType[4]”xmlns:soapenc=“http://schemas.xmlsoap.org/soap/encoding/"xsi:type=“soapenc:Array”><item soapenc:arrayType=“xsd:string[0]”xsi:type=“soaperc:Array”/><item sapenc:arrayType=“xsd:double[4]”xsi:type=“sapenc:Array”>1 6</item></itemp><item soapenc:arrayType=“xsd:double[][3]”xsi:type=“soapenc:Array”><item soapenc:arrayType=“xsd:double[3]”xsi:type=“soaperc:Array”><item xsi:type=“xsd:double”>8“xsd:double[6]”xsi:type=“soapenc:Array”><item xsi:type=“xsd:double”>5 enc:Array“><item xsi:type=”xsd:double“>54</item><item xsi:type=“xsd:double”>57</item></anArray></ns1:test></SOAP-ENV:Body>预期结果:----------------阵列(4){[0]=>字符串(0)“”[1]=>数组(4){[0]=>浮子(1)[1]=>浮子(5)[2] =>浮动(0)[3]=>浮子(6)}[2]=>数组(3){[0]=>数组(3){[0]=>浮子(8)[1]=>浮子(9)[2]=>浮子(1)}[1]=>浮动(0)[2]=>数组(6){[0]=>浮子(5)[1] =>浮子(7)[2]=>浮子(654)[3]=>浮子(8)[4]=>浮子(1)[5]=>浮子(32)}}[3]=>数组(2){[0]=>浮子(54)[1]=>浮子(57)}}实际结果:--------------数组(1){[“anArray”]=>数组(4){[0]=>字符串(0)“”[1]=>数组(4){[0]=>浮子(1)[1]=>浮子(5)[2]=>浮动(0)[3]=>浮子(6)}[2]=>对象(stdClass)(1){[“项目”]=>数组(5){[0]=>浮子(8)[1] =>浮子(9)[2]=>浮子(1)[3]=>字符串(0)“”[4]=>数组(6){[0]=>浮子(5)[1]=>浮子(7)[2]=>浮子(654)[3] =>浮子(8)[4]=>浮子(1)[5] =>浮子(32)}}}[3]=>数组(2){[0]=>浮子(54)[1]=>浮子(57)}}}

评论

 [2004-04-29 11:47 UTC]eric dot citaire at laposte dot网络
否则,预期结果应包含索引0处的空数组,但它包含的字符串与<item soapenc:arrayType=“xsd:string[0]”不对应xsi:type=“soapenc:Array”/>。
 [2004-05-14 18:38 UTC]考克斯点网
从声音上看,遇到的问题与这个问题没有太大不同。我加载了一个WSDL文件并对其进行了解析,但它应该分配的complexType被默认值Array覆盖,每次它尝试创建要发送的信封时,预期的结果总是会失败,因为它要查找的是complexType,所以说数据类型不存在。无论如何,这是我对8.0-RC3的比较(我删除了阻止代码离开complexType的注释):差异/WSDL.php/usr/lib/php/SAP/WSDL.php1070c1070号<#if(!array_key_exists('type',$this->wsdl->complexTypes[$this->模式][$thix->currentComplexType]){--->if(!array_key_exists('type',$this->wsdl->complexTypes[$this->模式][$thix->currentComplexType]){1072个1072个< #}---> }
 [2006-04-24 21:13 UTC]阿诺(阿诺·林堡)
你能看一下并适当地标记这个错误吗,谢谢
 [2008-04-06 09:36 UTC]医生(丹尼尔·奥康纳)
不幸的是,我认为我们需要更多的精简测试用例来追踪这一点。
 [2008-07-04 22:49 UTC]尤诺什(简·施奈德)
CVS中增加了单元测试。
 [2008-08-03 09:49 UTC]克韦斯克(克里斯蒂安·韦斯克)
向简历中添加测试。最新的cvs版本没有出现上述问题。
 [2008-08-04 08:01 UTC]尤诺什(简·施奈德)
我不知道你为什么添加了另一个测试,而我已经在你的评论上面直接提到了我已经添加了一个测试。如果SOAP的当前测试框架显然是PHPT,我也不知道为什么要添加PHPUnit测试。最后,我不知道为什么你的测试没有失败,但我的测试失败了,所以我们的测试都错了。