类数组的XmlSerialization

本文关键字:XmlSerialization 数组 | 更新日期: 2023-09-27 18:07:01

我有一个定义如下的类(使用xsd生成):

[GeneratedCodeAttribute("xsd", "4.0.30319.1")]
[SerializableAttribute]
[DebuggerStepThroughAttribute]
[DesignerCategoryAttribute("code")]
[XmlTypeAttribute(AnonymousType = true)]
[XmlRootAttribute(IsNullable = false)]
public class DataRequest
{
    private string _serviceField;
    private string _subscriptionField;
    public string Service
    {
        get
        {
            return _serviceField;
        }
        set
        {
            _serviceField = value;
        }
    }
    [XmlElement("Subscription"), DefaultValue(null)]
    public string Subscription
    {
        get
        {
            return _subscriptionField;
        }
        set
        {
            _subscriptionField = value;
        }
    }
}
然后,定义上述类的数组:
DataRequest[] requests = new DataRequest[2];
requests[0] = new DataRequest();
requests[1] = new DataRequest();
...

我想序列化这个数组,并以下面的结果结束:

  <SOAP-ENV:Body>
    <DataRequest>
      <Service>ServiceA</DataService>
      <Subscription />
    </DataRequest>
    <DataRequest>
      <Service>ServiceB</DataService>
      <Subscription />
    </DataRequest>
  </SOAP-ENV:Body>

然而,当我调用下面的,其中输入是数组:

XmlSerializer serializer = new XmlSerializer(typeof(input));
serializer.Serialize(writer, input);

得到如下结果:

  <Soap-ENV:Body>
    <ArrayOfDataRequest>
      <DataRequest>
        <Service>ServiceA</DataService>
        <Subscription />
      </DataRequest>
      <DataRequest>
        <Service>ServiceB</DataService>
        <Subscription />
      </DataRequest>
    </ArrayOfDataRequest>
  </Soap-ENV:Body>

是否有一些方法我可以摆脱ArrayOfDataRequest元素,只是有实际的数组元素直接序列化?

类数组的XmlSerialization

如果我错了,请纠正我,但我认为这是完全正确的,涉及特定于soap的序列化。body标记的直接子元素是参数的元素,在本例中是一个DataRequest对象数组。当序列化器省略ArrayOf时…标记时,SOAP消息将包含两个DataRequest类型的参数。

也许你可以说明为什么你需要这样一个"破碎"的消息来为你的实际问题找到解决方案?

相关文章:
  • 没有找到相关文章