我正在开发一个使用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; }
}
}
答案 0 :(得分:3)
[XmlType]
更改架构中complexType
的名称。它不会更改XML中的元素名称。
改为使用[XmlElement(ElementName="MyAddress", Namespace="your namespace")]
。