0
我需要序列化一個複合對象。我有一個對象「Trailer」,其中包含「Items」的「貨件」。當我走出序列化使用SoapFormatter像這樣的對象:SoapFormatter - 序列化出「乾淨」肥皂
Trailer trailer = new Trailer() { TrailerID = "1234" };
Shipment shipment1 = new Shipment() { ShipmentNo = "123456789", CarrierCode = "1234", SupplierCode = "12345", CarrierProNo = "1234567", BillOfLadingNo = "11111111", DateNeeded = "2013-04-15", Loc = "000", PackageSlipNo = "11111111", OrderShipped = "2013-02-15", UnloadPriority = "", UpdateID = "" };
shipment1.Items.Add(new Item() { ItemNo = "111111", ItemDescription = "Blah", ItemQty= "11", OrderNo = "1111111", OrderLineNo = "111" });
shipment1.Items.Add(new Item() { ItemNo = "222222", ItemDescription = "Blah 2", ItemQty= "22", OrderNo = "2222", OrderLineNo = "2222" });
trailer.Contents.Add(shipment1);
MemoryStream memoryStream = new MemoryStream();
SoapFormatter formatter = new SoapFormatter();
formatter.Serialize(memoryStream, trailer);
string trailerSoapMessage = Encoding.ASCII.GetString(memoryStream.GetBuffer());
我得到這個:
<SOAP-ENV:Body>
<Trailer id="ref-1">
<TrailerID id="ref-2">1234</TrailerID>
<Contents href="#ref-3"/>
</Trailer>
<a1:ArrayList id="ref-3" xmlns:a1="http://schemas.microsoft.com/clr/ns/System.Collections">
<_items href="#ref-4"/>
<_size>2</_size>
<_version>2</_version>
</a1:ArrayList>
<SOAP-ENC:Array id="ref-4" SOAP-ENC:arrayType="xsd:anyType[4]">
<item href="#ref-5"/>
<item href="#ref-6"/>
</SOAP-ENC:Array>
<Shipment id="ref-5">
<ASNNumber id="ref-7">123456789</ASNNumber>
<SupplierCode id="ref-8">12345</SupplierCode>
<Loc id="ref-9">000</Loc>
<CarrierCode id="ref-10">12345</CarrierCode>
<CarrierProNo id="ref-11">12223</CarrierProNo>
<BillOfLadingNo href="#ref-7"/>
<PackageSlipNo href="#ref-7"/>
<UpdateID id="ref-12"></UpdateID>
<UnloadPriority href="#ref-12"/>
<DateNeeded id="ref-13">2013-03-15</DateNeeded>
<OrderShipped id="ref-14">2013-02-15</OrderShipped>
<Items href="#ref-15"/>
</Shipment>
.....
我想與拖車含有包含項目的出貨量頂部節點更加結構化的消息。我還想刪除添加到節點的id屬性,但沒有序列化ArrayList元數據。我意識到這是通過設計,但我不想/需要額外的數據。這可能是使用錯誤工具進行工作的一種情況。
謝謝
我想通了,你可以使用「System.Runtime.Serialization .Formatters.FormatterTypeStyle.XsdString;」所以不使用ID,但我仍然獲得對象數組的ID,並且沒有獲得層次結構。 –