2009-10-16 4 views
3

WSE3을 사용하여 웹 서비스를 호출하는 프로젝트에서 작업하고 있습니다. 원래 VS2005를 사용하여 생성 된 유형은 시간이 지남에 따라 수정되었습니다. 이제 SOAP 메시지에서 유형의 이름을 변경해야합니다. XmlTypeAttribute를 사용하여이 작업을 수행해야하지만 그 이름은 형식 이름에 영향을주지 않습니다. 실험으로, 그 클래스의 속성에 XmlElementAttribute를 사용했는데, 그 속성에 대해 생성 된 요소의 이름이 변경되었습니다. 생성 된 객체는 부분 클래스를 사용하여 확장되었습니다.XmlTypeAttribute가 형식 이름을 변경하지 않습니다.

SOAP 유형은 "주소"로 유선을 통해 전달됩니다. 나는 왜 XmlTypeAttribute가 그것에 영향을 미치지 않는지, 왜 그것이 소문자를 가로 질러 오는지 알지 못한다.

내가 잘못하고있는 것, 또는 목표를 달성하는 더 좋은 방법에 대한 생각?

References.cs :

[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "2.0.50727.1434")] 
[System.SerializableAttribute()] 
[System.ComponentModel.DesignerCategoryAttribute("code")] 
[System.Xml.Serialization.XmlTypeAttribute(TypeName = "MyAddress", Namespace = "http://sample.com/transaction")] 
//              ^-- Soap typenamed "address", not "MyAddress" 
public partial class Address 
{   
    private string address1Field; 

    private string address2Field; 

    private string[] jurisdictionsField; 

    private System.DateTime resolvedDateField; 

    private bool resolvedDateFieldSpecified; 

    /// <remarks/> 
    [System.Xml.Serialization.XmlElementAttribute("MyAddress1", Form=System.Xml.Schema.XmlSchemaForm.Unqualified)] 
    //            ^--- SOAP element named "MyAddress1" as expected 
    public virtual string Address1 
    { 
     get { 
      return this.address1Field; 
     } 
     set { 
      this.address1Field = value; 
     } 
    } 

    /// <remarks/> 
    [System.Xml.Serialization.XmlElementAttribute("address2", Form=System.Xml.Schema.XmlSchemaForm.Unqualified)] 
    public virtual string Address2 
    { 
     get { 
      return this.address2Field; 
     } 
     set { 
      this.address2Field = value; 
     } 
    }   
} 

Address.cs :

public partial class Address 
{ 
    private int id; 

    public virtual int Id 
    { 
     get { return id; } 
     set { id = value; } 
    } 
} 

답변

3

[XmlType] 스키마의 complexType의 이름을 변경합니다. XML의 요소 이름은 변경되지 않습니다.

대신 [XmlElement(Name="MyAddress", Namespace="your namespace")]을 사용하십시오.

+0

더 복잡한 방법은 MSDN 설명서의 [XmlAttributes.XmlType Property] (https://msdn.microsoft.com/en-us/library/system.xml.serialization.xmlattributes.xmltype (영문) v = vs.100) .asp). - "XmlTypeAttribute를 만들고 XmlType 속성을 설정 한 다음 XmlAttributeOverrides 개체를 만들면 XML 요소 이름을 변경할 수 있습니다." –

관련 문제