陣列的我已經(使用XSD生成)如下面所定義的類:XmlSerialization類
[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元素,只是有實際的數組元素直接序列化?
嘿本,我只是試過了,我得到了同樣的東西(ArrayOfDataRequest)。 – Flack
我對使用xsd.exe工具生成的複雜類執行相同的操作。當序列化使用List,然後使用List.ToArray()時,我發現最好的選擇。命令將List轉換爲數組。這避免了必須指定要串行化的數組的大小。 你也可以使用'XmlWriterSettings XmlSettings = new XmlWriterSettings();'然後'XmlSettings.'指定選項。 –
MoonKnight