首页 > 解决方案 > 属性 c# 的 SOAP XML 序列化

问题描述

目前我的肥皂是这样生成的

 <HdrFault>
     <Fault>   
        <ConsumerProd>
           <Value>soa test</Value>
        </ConsumerProd>
     <Fault>
 </HrdFault>

我希望它像这样生成

<HdrFault>
   <Fault>   
      <ConsumerProd>soa test</ConsumerProd>
   <Fault>
</HrdFault>

这是业务对象。我明白为什么它在那里有一个“价值”字段。我如何序列化它以拥有上面提到的 Soap XML?

[MessageContract]
public partial class HdrFault
{

    private FaultHdr_CType faultHdrField;

    [MessageBodyMember]
    public FaultHdr_CType FaultHdr
    {
        get
        {
            return this.faultHdrField;
        }
        set
        {
            this.faultHdrField = value;
        }
    }
}

[MessageContract]
public class FaultHdr_CType
{
    #region ConsumerProd

    [MessageBodyMember]
    public FaultConsumerProd_Type ConsumerProd { get; set; }

    #endregion
}

[MessageContract]
public class FaultConsumerProd_Type
{
    #region Value

    [MessageBodyMember]
    public string Value { get; set; }

    #endregion
}

标签: xmlserializationsoap

解决方案


我做了两件事来解决这个问题。添加 [XmlText]

  [MessageContract]
    public class ValidConsmName_Type
    {

        #region Value

         [XmlText]
        [MessageBodyMember]
        public string Value { get; set; }

        #endregion
    }

其次,我在合同中添加了以下内容

[XmlSerializerFormat(SupportFaults = true)]  
    [ServiceContract(Namespace = "http://jackhenry.com/jxchange/TPG/2008")]
    public interface IInt
{
..}

推荐阅读