XML SOAP命名空间仅使用前3个字符

问题描述

假设我有以下xsd:

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="abcd" elementFormDefault="qualified" xmlns:ebppif1="abcd">
    <xs:element name="Test">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="someValue" type="xs:long"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
</xs:schema>

我跟随this tutorial创建了可完美运行的SOAP Web服务。

但是问题是名称空间缩短为'abc'(在SoapIU上)

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:abc="abcd">
   <soapenv:Header/>
   <soapenv:Body>
      <abc:Test>
         <abc:someValue>123</abc:someValue>
      </abc:Test>
   </soapenv:Body>
</soapenv:Envelope>

如何禁用或更改名称空间长度缩短以在请求中实现完整的名称空间?

解决方法

您对XML名称空间的理解不正确。名称空间前缀不是名称空间。

SoapUI生成的XML文档是正确的。如果您查看SoapUI文档,则命名空间前缀'abc'将正确映射到命名空间'abcd'。

我强烈建议您阅读有关XML名称空间的W3Schools教程。这看似困难,但实际上非常简单。如果您花一些时间来学习基础知识,那将会有所收获。