From: Yash Ganthe on 31 Mar 2010 07:50 Hi, I have the follwoing class structure: public class MyClass { public Fields Fields; } public partial class Fields { public BaseField[] myFields; } [System.Xml.Serialization.XmlInclude(typeof(DerivedField))] public class BaseField { //some properties } [XmlRoot("derived")] public partial class DerivedField : BaseField { } All the classes are tagged as serilizable. When I XMLSerialize an object of type MyClass, here is what I get: <MyClass> <Fields> <myFields> <derived name="JobID" id="A" precision="9" /> </myFields> </Fields> </MyClass> The serializer adds an XML element for every public property, which is why myfields appears as a tag in the XML. This is undesirable in my application as I would like the elements in myFields[] to get serialized directly under <Fields> as : <MyClass> <Fields> <derived name="JobID" id="A" precision="9" /> <derived name="JobID" id="B" precision="9" /> <derived1 name="JobID" id="C" precision="9" /> <derived2 name="JobID" id="D" precision="9" /> </Fields> </MyClass> Is there a way to instruct the serializer using Attributes or some other to not add a tag for the myFields array? Thanks, Yash
From: Hovhannes Terteryan on 31 Mar 2010 08:16 Hi, I suppose you either need to implement IXmlSerializable in MyClass, or make the class Fields as a collection. "Yash Ganthe" <yashgt(a)gmail.com> wrote in message news:95a32c1f-df23-4221-a775-fe92a50f3c28(a)l5g2000pri.googlegroups.com... > Hi, > > I have the follwoing class structure: > > public class MyClass { > public Fields Fields; > } > > public partial class Fields { > > public BaseField[] myFields; > > } > > [System.Xml.Serialization.XmlInclude(typeof(DerivedField))] > public class BaseField > { > //some properties > } > > [XmlRoot("derived")] > public partial class DerivedField : BaseField { > } > > All the classes are tagged as serilizable. > When I XMLSerialize an object of type MyClass, here is what I get: > <MyClass> > <Fields> > <myFields> > <derived name="JobID" id="A" precision="9" /> > </myFields> > </Fields> > </MyClass> > > The serializer adds an XML element for every public property, which is > why myfields appears as a tag in the XML. > This is undesirable in my application as I would like the elements in > myFields[] to get serialized directly under <Fields> as : > <MyClass> > <Fields> > <derived name="JobID" id="A" precision="9" /> > <derived name="JobID" id="B" precision="9" /> > <derived1 name="JobID" id="C" precision="9" /> > <derived2 name="JobID" id="D" precision="9" /> > </Fields> > </MyClass> > > Is there a way to instruct the serializer using Attributes or some > other to not add a tag for the myFields array? > > > Thanks, > Yash
From: Family Tree Mike on 31 Mar 2010 12:01 "Yash Ganthe" wrote: > Hi, > > I have the follwoing class structure: > > public class MyClass { > public Fields Fields; > } > > public partial class Fields { > > public BaseField[] myFields; > > } > > [System.Xml.Serialization.XmlInclude(typeof(DerivedField))] > public class BaseField > { > //some properties > } > > [XmlRoot("derived")] > public partial class DerivedField : BaseField { > } > > All the classes are tagged as serilizable. > When I XMLSerialize an object of type MyClass, here is what I get: > <MyClass> > <Fields> > <myFields> > <derived name="JobID" id="A" precision="9" /> > </myFields> > </Fields> > </MyClass> > > The serializer adds an XML element for every public property, which is > why myfields appears as a tag in the XML. > This is undesirable in my application as I would like the elements in > myFields[] to get serialized directly under <Fields> as : > <MyClass> > <Fields> > <derived name="JobID" id="A" precision="9" /> > <derived name="JobID" id="B" precision="9" /> > <derived1 name="JobID" id="C" precision="9" /> > <derived2 name="JobID" id="D" precision="9" /> > </Fields> > </MyClass> > > Is there a way to instruct the serializer using Attributes or some > other to not add a tag for the myFields array? > > > Thanks, > Yash > . > You can use XmlIgnore as in the following: public partial class Fields { [XmlIgnore()] public BaseField[] myFields; } Mike
|
Pages: 1 Prev: FormClosing() and FormClosed() Next: SQL Server Express 2008 - missing service |