OAGIS模式忽略<streetname>节点

时间:2015-09-16 13:49:45

标签: php arrays xml soap xsd-validation

问题:当我通过PHP SoapClient向Biztalk发送请求时,我丢失了一个节点<StreetName>

Biztalk通过OAGIS架构验证我们的请求。

对于发送,我将XML转换为Array,并发送类似数组的请求,但在检查我的上一次肥皂请求$soapClient->__getLastRequest()时,我正在丢失节点。

我的请求数组:

 'Location' =>
    array(
        'Address' =>
            array(
                'StreetName' => 'StreetName',
                'CityName' => 'Zyrardow',
                'CountrySubDivisionCode' => 'PL',
                'CountryCode' => 'PL',
                'PostalCode' => '96-300',
            ),
    ),

$soapClient->__getLastRequest()我失去了节点<StreetName>

</ns1:Location>
    <ns1:Address>
        <ns1:CityName>MyCityName</ns1:CityName>
        <ns1:CountrySubDivisionCode>PL</ns1:CountrySubDivisionCode>
        <ns1:CountryCode>PL</ns1:CountryCode>
        <ns1:PostalCode>96-300</ns1:PostalCode>
    </ns1:Address>
</ns1:Location>

在OAGIS文档中,节点<Address>应包含此节点 OAGIS doc "Address"

如果我发送数组:

<AddressLine>

或:

<LineOne>
<LineTwo>
<LineThree>
<LineFour>
<LineFive>

此节点我们输了!

数组和上次请求的示例($soapClient->__getLastRequest()):

'Location' =>array(
    'Address' =>
        array(
            'AddressLine' => 'AddressLine',
            'CityName' => 'Zyrardow',
            'CountrySubDivisionCode' => 'PL',
            'CountryCode' => 'PL',
            'PostalCode' => '96-300',
        ),
),
<ns1:Location>
    <ns1:Address>
        <ns1:AddressLine>AddressLine</ns1:AddressLine>
        <ns1:CityName>MYCHANGESHERE</ns1:CityName>
        <ns1:CountrySubDivisionCode>PL</ns1:CountrySubDivisionCode>
        <ns1:CountryCode>PL</ns1:CountryCode>
        <ns1:PostalCode>96-300</ns1:PostalCode>
    </ns1:Address>
<ns1:Location>

'Location' =>array(
    'Address' =>
        array(
            'LineOne' => 'LineOne',
            'LineTwo' => 'LineTwo',
            'LineThree' => 'LineThree',
            'LineFour' => 'LineFour',
            'LineFive' => 'LineFive',
            'CityName' => 'Zyrardow',
            'CountrySubDivisionCode' => 'PL',
            'CountryCode' => 'PL',
            'PostalCode' => '96-300',
        ),
),
<ns1:Location>
    <ns1:Address>
        <ns1:LineOne>LineOne</ns1:LineOne>
        <ns1:LineTwo>LineTwo</ns1:LineTwo>
        <ns1:LineThree>LineThree</ns1:LineThree>
        <ns1:LineFour>LineFour</ns1:LineFour>
        <ns1:LineFive>LineFive</ns1:LineFive>
        <ns1:CityName>MYCHANGESHERE</ns1:CityName>
        <ns1:CountrySubDivisionCode>PL</ns1:CountrySubDivisionCode>
        <ns1:CountryCode>PL</ns1:CountryCode>
        <ns1:PostalCode>96-300</ns1:PostalCode>
    </ns1:Address>
<ns1:Location>

其他信息:

我找到了documentation,它向我们展示了我们需要选择要发送的内容。但就我而言,一些节点被忽略了。

2 个答案:

答案 0 :(得分:0)

BDN,

OAGIS 9.4.1地址的定义如链接所示:
(地址线或(第一行,第二行,第三行,第四行,第五行) )或(建筑物编号,建筑物名称,街道名称,单位,楼层, 邮政信箱,交付点代码))

如果您选择使用AddressLine或LineOne,则无法通过此定义使用StreetName。

最新版本OAGIS 10.1没有此限制。

答案 1 :(得分:0)

BDN,

如果您使用StreetName选择序列,则XML Schema定义允许通过定义。从XML Schema Definition中,xsd无法删除内容。

麦克