在WCF Web服务中使用XSD生成额外标记

时间:2016-09-28 16:52:48

标签: c# wcf wsdl

我有一个xsd文件,用于定义我的服务请求。所以我使用xsd.exe为这个服务生成一个c#类。

这是xsd文件:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
    <xs:element name="schemaConectividade">
        <xs:complexType>
            <xs:choice>
                <xs:element name="conectividadeParaOperadora" minOccurs="0">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="cabecalhoTransacao" type="ct_cabecalhoTransacao"/>
                            <xs:element name="dadosSolicitacao">
                                <xs:complexType>
                                    <xs:sequence>
                                        <xs:element name="atendimentoRN" type="xs:string"/>
                                        <xs:element name="beneficiario">
                                            <xs:simpleType>
                                                <xs:restriction base="xs:string">
                                                    <xs:maxLength value="20"/>
                                                </xs:restriction>
                                            </xs:simpleType>
                                        </xs:element>
                                        <xs:element name="executante" type="xs:long"/>
                                        <xs:element name="solicitante" type="xs:long"/>
                                        <xs:element name="profissionalSolicitante" type="ct_profissionalSolicitante"/>
                                        <xs:element name="caraterAtendimento" type="xs:int"/>
                                        <xs:element name="procedimentosSolicitados">
                                            <xs:complexType>
                                                <xs:sequence>
                                                    <xs:element name="procedimento" type="ct_procedimento" maxOccurs="unbounded"/>
                                                </xs:sequence>
                                            </xs:complexType>
                                        </xs:element>
                                    </xs:sequence>
                                </xs:complexType>
                            </xs:element>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
                <xs:element name="operadoraParaConectividade" minOccurs="0">
                    <xs:complexType>
                        <xs:choice>
                            <xs:element name="retornoSchema" minOccurs="0">
                                <xs:complexType>
                                    <xs:sequence>
                                        <xs:element name="descricaoSchemaErro" type="xs:string"/>
                                    </xs:sequence>
                                </xs:complexType>
                            </xs:element>
                            <xs:element name="retornoNegocio" type="ct_retornoNegocio" minOccurs="0"/>
                        </xs:choice>
                    </xs:complexType>
                </xs:element>
            </xs:choice>
        </xs:complexType>
    </xs:element>
    <xs:complexType name="ct_dadosTransacao">
        <xs:sequence>
            <xs:element name="horaTransacao" type="xs:time"/>
            <xs:element name="dataTransacao" type="xs:date"/>
            <xs:element name="numeroTransacao" type="xs:long"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="ct_retornoNegocio">
        <xs:sequence>
            <xs:element name="statusRetorno">
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:length value="1"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="dadosTransacao" type="ct_dadosTransacao"/>
            <xs:element name="transacaoErro" type="ct_transacaoErro" minOccurs="0"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="ct_transacaoErro">
        <xs:sequence>
            <xs:element name="descricaoErro" type="xs:string"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="ct_cabecalhoTransacao">
        <xs:sequence>
            <xs:element name="numeroTransacao" type="xs:long"/>
            <xs:element name="numeroAtendimento" type="xs:long"/>
            <xs:element name="dataTransacao" type="xs:date"/>
            <xs:element name="horaTransacao" type="xs:time"/>
            <xs:element name="tipoTransacao" type="xs:integer"/>
            <xs:element name="terminal" type="xs:long" minOccurs="0"/>
            <xs:element name="tipoTerminal" type="xs:string" minOccurs="0"/>
            <xs:element name="fonteDadosBeneficiario" type="xs:string" minOccurs="0"/>
            <xs:element name="fonteDadosPrestador" type="xs:string" minOccurs="0"/>
            <xs:element name="centralAtendimento" type="xs:long" minOccurs="0"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="ct_profissionalSolicitante">
        <xs:sequence>
            <xs:element name="nomeProfissional" type="xs:string"/>
            <xs:element name="conselhoProfissional" type="xs:string"/>
            <xs:element name="numeroConselhoProfissional" type="xs:int"/>
            <xs:element name="UF" type="xs:string"/>
            <xs:element name="CBOS" type="xs:string"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="ct_procedimento">
        <xs:sequence>
            <xs:element name="sequencialProcedimento" type="xs:integer"/>
            <xs:element name="dataAtendimento" type="xs:date"/>
            <xs:element name="quantidade" type="xs:integer"/>
            <xs:element name="procedimento" type="xs:string"/>
            <xs:element name="situacaoTransacao" type="xs:string"/>
            <xs:element name="mensagem" type="xs:string" minOccurs="0"/>
        </xs:sequence>
    </xs:complexType>
</xs:schema>

这是生成的界面:

using System.ServiceModel;

namespace MyNamespace
{
    [ServiceContract(SessionMode = SessionMode.Allowed)]
    public interface IOrizon
    {

        [System.ServiceModel.OperationContract]
        [System.ServiceModel.XmlSerializerFormatAttribute()]
        ResponseType TransacaoAex_Operation(RequestType conectividadeParaOperadora);

    }
}

使用SoapUI测试此服务时,它会生成一个“TransacaoAex_Operation”标记,该标记不在我的xsd文件中:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
   <soapenv:Header/>
   <soapenv:Body>
      <TransacaoAex_Operation>
         <conectividadeParaOperadora>
  ...

有办法避免这种情况吗?

0 个答案:

没有答案