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; }
}
}
有關更復雜的方法,請參閱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