Soap 生成XML请求时序列化后丢失属性

Soap 生成XML请求时序列化后丢失属性,soap,sabre,Soap,Sabre,我从web服务引用的类创建了请求对象,并将枚举值分配给对象的属性 SWS.QueueAccessLLSRQ.QueueAccessRQ request = new SWS.QueueAccessLLSRQ.QueueAccessRQ(); request.Version = "2.0.9"; request.Navigation = new SWS.QueueAccessLLSRQ.QueueAccessRQNavigation() { Action = SWS.QueueAccessLLSR

我从web服务引用的类创建了请求对象,并将枚举值分配给对象的属性

SWS.QueueAccessLLSRQ.QueueAccessRQ request = new SWS.QueueAccessLLSRQ.QueueAccessRQ();

request.Version = "2.0.9";
request.Navigation = new SWS.QueueAccessLLSRQ.QueueAccessRQNavigation() { Action = SWS.QueueAccessLLSRQ.QueueAccessRQNavigationAction.I };
我希望导航节点中包含属性为“Action”的XML请求,如下所示:

<QueueAccessRQ xmlns="http://webservices.sabre.com/sabreXML/2011/10" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Version="2.0.9"> <Navigation Action="QR"/></QueueAccessRQ>

但是在序列化之后,我将得到下一个没有“Action”属性的XML请求

<?xml version="1.0"?><QueueAccessRQ Version="2.0.9" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><Navigation xmlns="http://webservices.sabre.com/sabreXML/2011/10"/></QueueAccessRQ>

此外,下面是我在请求中使用的web服务引用中的类:

/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.7.2117.0")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true, Namespace="http://webservices.sabre.com/sabreXML/2011/10")]
public partial class QueueAccessRQ {

    private QueueAccessRQNavigation navigationField;

    private QueueAccessRQQueueIdentifier queueIdentifierField;

    private QueueAccessRQSelection[] selectionField;

    private bool returnHostCommandField;

    private bool returnHostCommandFieldSpecified;

    private System.DateTime timeStampField;

    private bool timeStampFieldSpecified;

    private string versionField;

    public QueueAccessRQ() {
        this.versionField = "2.0.9";
    }

    /// <remarks/>
    public QueueAccessRQNavigation Navigation {
        get {
            return this.navigationField;
        }
        set {
            this.navigationField = value;
        }
    }

    /// <remarks/>
    public QueueAccessRQQueueIdentifier QueueIdentifier {
        get {
            return this.queueIdentifierField;
        }
        set {
            this.queueIdentifierField = value;
        }
    }

    /// <remarks/>
    [System.Xml.Serialization.XmlElementAttribute("Selection")]
    public QueueAccessRQSelection[] Selection {
        get {
            return this.selectionField;
        }
        set {
            this.selectionField = value;
        }
    }

    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute()]
    public bool ReturnHostCommand {
        get {
            return this.returnHostCommandField;
        }
        set {
            this.returnHostCommandField = value;
        }
    }

    /// <remarks/>
    [System.Xml.Serialization.XmlIgnoreAttribute()]
    public bool ReturnHostCommandSpecified {
        get {
            return this.returnHostCommandFieldSpecified;
        }
        set {
            this.returnHostCommandFieldSpecified = value;
        }
    }

    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute()]
    public System.DateTime TimeStamp {
        get {
            return this.timeStampField;
        }
        set {
            this.timeStampField = value;
        }
    }

    /// <remarks/>
    [System.Xml.Serialization.XmlIgnoreAttribute()]
    public bool TimeStampSpecified {
        get {
            return this.timeStampFieldSpecified;
        }
        set {
            this.timeStampFieldSpecified = value;
        }
    }

    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute()]
    public string Version {
        get {
            return this.versionField;
        }
        set {
            this.versionField = value;
        }
    }
}

/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute( "System.Xml", "4.7.2117.0" )]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute( "code" )]
[System.Xml.Serialization.XmlTypeAttribute( AnonymousType = true, Namespace = "http://webservices.sabre.com/sabreXML/2011/10" )]

public partial class QueueAccessRQNavigation {


    private QueueAccessRQNavigationAction actionField;

    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute()]
    public QueueAccessRQNavigationAction Action
    {
        get
        {
            return this.actionField;
        }
        set
        {
            this.actionField = value;
        }
    }

}
//
[System.CodeDom.Compiler.GeneratedCodeAttribute(“System.Xml”,“4.7.2117.0”)]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute(“代码”)]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true,命名空间=”http://webservices.sabre.com/sabreXML/2011/10")]
公共部分类QueueAccessRQ{
private QueueAccessRQNavigation导航字段;
private QueueAccessRQQueueIdentifier queueIdentifierField;
private QueueAccessRQSelection[]selectionField;
private bool returnHostCommandField;
指定的专用布尔返回主机命令字段;
private System.DateTime时间戳字段;
指定的专用布尔值;
私有字符串版本字段;
公共队列访问器rq(){
this.versionField=“2.0.9”;
}
/// 
公共队列访问RQNavigation导航{
得到{
返回此.navigationField;
}
设置{
this.navigationField=值;
}
}
/// 
公共QueueAccessRQQueueIdentifier队列标识符{
得到{
返回此.queueIdentifierField;
}
设置{
this.queueIdentifierField=值;
}
}
/// 
[System.Xml.Serialization.XmlElementAttribute(“选择”)]
公共队列AccessRQSelection[]选择{
得到{
返回此.selectionField;
}
设置{
this.selectionField=值;
}
}
/// 
[System.Xml.Serialization.XmlAttributeAttribute()]
公共布尔返回主机命令{
得到{
返回此.returnHostCommandField;
}
设置{
this.returnHostCommandField=值;
}
}
/// 
[System.Xml.Serialization.XmlIgnoreAttribute()]
指定了公共bool returnHostCommands{
得到{
返回此。返回指定的HostCommandField;
}
设置{
this.returnHostCommandFieldSpecified=值;
}
}
/// 
[System.Xml.Serialization.XmlAttributeAttribute()]
public System.DateTime时间戳{
得到{
返回此.timestamp字段;
}
设置{
this.timeStampField=值;
}
}
/// 
[System.Xml.Serialization.XmlIgnoreAttribute()]
指定公共bool时间戳{
得到{
返回指定的这个.timestampfield;
}
设置{
this.timeStampFieldSpecified=值;
}
}
/// 
[System.Xml.Serialization.XmlAttributeAttribute()]
公共字符串版本{
得到{
返回此.version字段;
}
设置{
this.versionField=值;
}
}
}
/// 
[System.CodeDom.Compiler.GeneratedCodeAttribute(“System.Xml”,“4.7.2117.0”)]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute(“代码”)]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true,命名空间=”http://webservices.sabre.com/sabreXML/2011/10" )]
公共部分类QueueAccessRQNavigation{
专用QueueAccessRQNavigationAction操作字段;
/// 
[System.Xml.Serialization.XmlAttributeAttribute()]
公共队列访问RQNavigationAction操作
{
得到
{
返回此.actionField;
}
设置
{
this.actionField=值;
}
}
}
知道如何在序列化之后不丢失属性“Action”吗


我将非常感谢您的帮助。

您缺少指定的属性
ActionSpecified
,我已经添加了有效负载结构的一个片段

QueueAccessRQ request = new QueueAccessRQ()
{
    Version = "2.0.9",
    Navigation = new QueueAccessRQNavigation()
    {
        Action = QueueAccessRQNavigationAction.I,
        ActionSpecified = true
    }
};