xml中的命名空间重复问题

时间:2015-06-19 18:43:13

标签: xml web-services xsd xml-namespaces

我在webservice的响应xml中遇到名称空间重复问题。 我有一个使用customer.xsd和common.xsd的responder.xsd 我的响应xml是使用这两个xsds中的元素构建的。 XML响应示例如下:

...
<ns:RoleType></ns:RoleType>
<ns:Addresses>
  <ns:PostalInfo>
    <comm:AddressLine></comm:AddressLine>
    <comm:City></comm:City>
  </ns:PostalInfo>
</ns:Addresses>
<ns:ValidFlag></ns:ValidFlag>
...

其中ns:是客户名称空间,comm:是公共名称空间。

但我得到的回应如下

...
<ns1:RoleType xmlns:ns1="urn:Customer:domain:5"></ns1:RoleType>
<ns2:Addresses xmlns:ns2="urn:Customer:domain:5">
  <ns2:PostalInfo>
    <ns3:AddrLine xmlns:ns3="urn:Common:domain:5"></ns3:AddrLine>
    <ns4:City xmlns:ns4="urn:Common:domain:5"></ns4:City>
  </ns2:PostalInfo>
</ns2:Addresses>
<ns5:ValidFlag xmlns:ns3="urn:Customer:domain:5></ns5:ValidFlag>
...

有人可以帮助我理解为什么相同的命名空间与增量数字如ns1,ns2和comm1,comm2等重复吗? 我该如何解决这个问题?

更新: 格式良好的代码片段以及根元素。

<GetHCPResponse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="urn:services:ServiceResponder:5" xsi:schemaLocation="urn:services:ServiceResponder:5 C:\Users\vijay\Desktop\wsdl\wsdl\Service_5_2\ServiceResponder.xsd">
        <StatusCode>0</StatusCode>
        <StatusMessage>Success</StatusMessage>
        <HCP>
            <ns1:ID xmlns:ns1="urn:Customer:domain:5">29199486</ns1:ID>
            <ns2:CustomerClass xmlns:ns2="urn:Customer:domain:5">HCP</ns2:CustomerClass>
            <ns3:CustomerStatus xmlns:ns3="urn:Customer:domain:5">A</ns3:CustomerStatus>
            <ns4:RoleType xmlns:ns4="urn:Customer:domain:5">P</ns4:RoleType>
            <ns5:Addresses xmlns:ns5="urn:Customer:domain:5">
                <ns5:PostalContact>
                    <ns5:MasterAddressID>15863814</ns5:MasterAddressID>
                    <ns5:PostalInfo>
                        <ns6:AddressLine LineNo="1" xmlns:ns6="urn:CommonTypes:domain:5">8252 NW 25TH ST</ns6:AddressLine>
                        <ns7:City xmlns:ns7="urn:CommonTypes:domain:5">DORAL</ns7:City>

...

谢谢, 维杰

2 个答案:

答案 0 :(得分:0)

命名空间前缀只是因为它们绑定的命名空间URI才有意义。命名空间前缀的实际值是无关紧要的。

答案 1 :(得分:0)

您似乎正在使用第三方网络服务而且您不想修改xsds和wsdls,对吗?

但是正如你所说的那个名称空间相同......你是否尝试在使用,统一名称空间之前手动更新xsd和wsdl?