C# XML Serialisation of Object that has an Object field without namespaces -
i trying serialize object xml has 'object' field. want achieve xml no namespaces or attributes. able remove namespace of root element, however, object element remains having namespace.
my object serialize;
public class message { public string metadata { get; set; } public object payload { get; set; } public message() { } public message(string metadata, object payload) { this.metadata = metadata; this.payload = payload; } }
how serialize;
var s = new system.xml.serialization.xmlserializer(typeof(message)); var ns = new system.xml.serialization.xmlserializernamespaces(); ns.add(string.empty, string.empty); stringwriter writer = new stringwriter(); s.serialize(writer, payload, ns); writer.close();
my output:
<message> <metadata>mymetadata</metadata> <payload xmlns:q1="http://www.w3.org/2001/xmlschema" d2p1:type="q1:string" xmlns:d2p1="http://www.w3.org/2001/xmlschema-instance">mypayload</payload> </message>
my ideal output:
<message> <metadata>mymetadata</metadata> <payload>mypayload</payload> </message>
i java developer, , first day doing c#! apologies if missing obvious.
(my main goal end having following output)
<message> <metadata>mymetadata</metadata> <payload class="aclass">mypayload</payload> </message>
but can myself once have found solution above problem!
the type
attribute necessary in order able deserialize payload
property; if serializer doesn't know type of content, how can deserialize it?
normally namespaces added root element, explicitly prevented specifying xmlserializernamespaces
empty mapping, namespace added on payload
element instead.
if use xmlserializer
, best can this:
<message xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xmlns:xsd="http://www.w3.org/2001/xmlschema"> <metadata>mymetadata</metadata> <payload xsi:type="xsd:string">mypayload</payload> </message>
now, of course generate xml manually, without namespace, need way of knowing type of payload
deserialization.
Comments
Post a Comment