2009-10-16 79 views
3

我正在使用WSE3調用Web服務的項目。最初使用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屬性](https://msdn.microsoft.com/en-us/library/system.xml.serialization.xmlattributes.xmltype( v = VS.100)的.asp)。 - 「通過創建XmlTypeAttribute,將XmlType屬性設置爲它,並創建一個XmlAttributeOverrides對象,您可以更改XML元素名稱。」 – 2015-09-16 20:08:33