开发者

XmlSerialization of array of classes

开发者 https://www.devze.com 2023-04-01 01:23 出处:网络
I have a classes defined as below (generated using xsd): [GeneratedCodeAttribute(\"xsd\", \"4.0.30319.1\")]

I have a classes defined as below (generated using xsd):

[GeneratedCodeAttribute("xsd", "4.0.30319.1")]
[SerializableAttribute]
[DebuggerStepThr开发者_如何学编程oughAttribute]
[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;
        }
    }
}

Then , I define an array of the above class:

DataRequest[] requests = new DataRequest[2];
requests[0] = new DataRequest();
requests[1] = new DataRequest();
...

I want to serialize this array and end up with the below:

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

However, when I call the below, where input is the array:

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

I get the following:

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

Is there some way I can get rid of the ArrayOfDataRequest element, and just have the actual array elements serialized directly?


Please correct me if i am wrong, but I think this is totally right what concerns SOAP-specific serialization. The immediate child of the body tag is the element for the parameter, in this case an array of DataRequest objects. When the serializer would leave out the ArrayOf... tags, the SOAP message would instead contain two parameters of type DataRequest.

Maybe you can specify why you would need such a "broken" message to find a solution for you actual problem?

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号