XmlTypeAttribute不会更改类型名称

时间:2009-10-16 19:32:54

标签: .net xml-serialization

我正在开发一个使用WSE3调用Web服务的项目。最初使用VS2005生成的类型已经过一段时间的修改。现在,我需要更改SOAP消息中类型的名称。我认为应该使用XmlTypeAttribute完成,但这不会影响类型名称。作为一个实验,我在该类的属性上使用了XmlElementAttribute,这确实改变了为该属性生成的元素的名称。生成的对象已使用部分类进行了扩展。

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; }
    }
}

1 个答案:

答案 0 :(得分:3)

[XmlType]更改架构中complexType的名称。它不会更改XML中的元素名称。

改为使用[XmlElement(ElementName="MyAddress", Namespace="your namespace")]