【问题标题】:OAGIS schema ignores <StreetName> nodeOAGIS 架构忽略 <StreetName> 节点
【发布时间】:2015-12-13 03:41:25
【问题描述】:

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

Biztalk 通过 OAGIS 模式验证我们的请求。

对于发送,我将XML 转换为Array,并发送一个像数组一样的请求,但是当检查我的最后一个soap 请求$soapClient-&gt;__getLastRequest() 时,我正在丢失节点。

我的请求数组:

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

$soapClient-&gt;__getLastRequest() 我正在丢失节点&lt;StreetName&gt;

</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 文档节点 &lt;Address&gt; 中应包含此节点 OAGIS doc "Address"

如果我发送数组:

<AddressLine>

或:

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

这个节点我们不会丢失!

数组示例和最后一个请求($soapClient-&gt;__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,它告诉我们需要选择要发送的内容。但就我而言,有些节点被忽略了。

【问题讨论】:

    标签: php arrays xml soap xsd-validation


    【解决方案1】:

    bdn,

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

    迈克

    【讨论】:

      【解决方案2】:

      bdn,

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

      如果您选择使用 AddressLine 或 LineOne,您将无法使用此定义的 StreetName。

      最新版本的OAGIS 10.1没有这个限制。

      【讨论】:

      • 是的,我知道。但是当我只发送 &lt;StreetName&gt; 而没有 AddressLine or LineOne 时,我会丢失 &lt;StreetName&gt; 节点。
      猜你喜欢
      • 1970-01-01
      • 2014-07-17
      • 2014-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多