Ну допустим вот так все сериализуется на раз:
Dim Buf(10000) As Byte
Dim MS As New System.IO.MemoryStream(Buf)
Dim CL As New System.Collections.Specialized.NameValueCollection
CL.Add("Color", "Red")
CL.Add("Font-Size", "XX-Small")
CL.Add("Width", "100px")
Dim X3 As New System.Runtime.Serialization.Formatters.Soap.SoapFormatter
X3.Serialize(MS, CL)
Dim Encoder As New System.Text.ASCIIEncoding
Dim XML As String = Encoder.GetString(Buf)
Только все вот эти SOAP-приблуды меня в данном конкретном случае не радуют, типа
автор |
<SOAP-ENV:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:clr="http://schemas.microsoft.com/soap/encoding/clr/1.0" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <SOAP-ENV:Body> <a1:NameValueCollection id="ref-1" xmlns:a1="http://schemas.microsoft.com/clr/nsassem/System.Collections.Specialized/System%2C%20Version%3D2.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3Db77a5c561934e089">
...
<SOAP-ENC:Array id="ref-16" SOAP-ENC:arrayType="xsd:anyType[1]"> <item id="ref-19" xsi:type="SOAP-ENC:string">Red</item> </SOAP-ENC:Array> <SOAP-ENC:Array id="ref-17" SOAP-ENC:arrayType="xsd:anyType[1]"> <item id="ref-20" xsi:type="SOAP-ENC:string">XX-Small</item> </SOAP-ENC:Array> <SOAP-ENC:Array id="ref-18" SOAP-ENC:arrayType="xsd:anyType[1]"> <item id="ref-21" xsi:type="SOAP-ENC:string">100px</item> </SOAP-ENC:Array> </SOAP-ENV:Body> </SOAP-ENV:Envelope> |
Хотел сделать так - чтобы СОАП-конверт отрезать.
Dim X1 As New System.Xml.Serialization.XmlSerializer(CL.GetType)
X1.Serialize(MS, CL)
А неполучацца. Ругается -
автор |
An exception of type 'System.InvalidOperationException' occurred in System.Xml.dll but was not handled in user code
Additional information: To be XML serializable, types which inherit from ICollection must have an implementation of Add(System.String) at all levels of their inheritance hierarchy. System.Collections.Specialized.NameValueCollection does not implement Add(System.String). |
Не понимаю, это вообще невозможно без SOAP, или надо еще где-то чего-то подкрутить?