How to stream an object as XML to a string


		private static string getXMLAsAString(LoadTenderTrip t)
		{
			XmlSerializer x = new XmlSerializer(typeof(LoadTenderTrip));
			StringWriter w = new StringWriter();
			try
			{
				x.Serialize(w,t);
			}
			finally
			{
				w.Close();
			}
			return w.ToString();
		} 

Controlling root and root field name

[System.Xml.Serialization.XmlRootAttribute(ElementName="MY_XML_CLASS", Namespace="", IsNullable=false)]
Public class MyClass
{
}

Will result in

<MY_XML_CLASS>
</MY_XML_CLASS>

With out "ElementName" it will be

<MyClass>
</MClass>

Controlling array elements

		[System.Xml.Serialization.XmlElementAttribute("LOAD_TENDER_EQUIPMENT")]
		public LoadTenderEquipment[] equipmentArray; 

Without the above attribute you will see

<someroot>
	<equipmentArray>
		<LoadTenderEquipment>
		</LoadTenderEquipment>
	</equipmentArray>
</someroot>

With the above attribute you will see

<someroot>
	<LOAD_TENDER_EQUIPMENT>
	</LOAD_TENDER_EQUIPMENT>
</someroot>

How to write a string to a file

		public static void writeStringToFile(string filename,string msg)
		{
			StreamWriter w = null;
			try
			{
				w = new StreamWriter(filename);
				w.WriteLine(msg);
			}
			finally
			{
				if (w!= null) w.Close();
			}

		}

satya - Wednesday, June 13, 2007 10:06:09 AM

More sample code


//************************************************
//* packages and imports
//************************************************
using System;
using System.Data;
using System.Collections;
using System.Xml.Serialization;
using System.IO;
namespace XMLSerializationTest
{
    class DBTest
    {
        [STAThread]
        static void Main(string[] args)
        {
            //Read the xml from a file into an object
            //Serialize the xml back to output stream
            folder f = xmlToCode();
            System.Console.WriteLine(
                "XML to code to print stream");
            printObjectAsXML(f);

            //code to xml
            f = codeToXML();
            System.Console.WriteLine(
                "Code to XML to print stream");
            printObjectAsXML(f);

        }//eof-main
//************************************************
//* xml to code
//************************************************
        static folder xmlToCode()
        {
            FileStream fs = null;
            try
            {
                fs = new System.IO.FileStream("sample.xml",
                    System.IO.FileMode.Open);
                //returns the folder object    
                XmlSerializer s =
                    new XmlSerializer(typeof(folder));
                folder o = (folder)s.Deserialize(fs);
                return o;
            }
            finally
            {
                if (fs != null) 
                {
                    fs.Close();
                }
            }
        }
//************************************************
//* code to xml
//************************************************
        static folder codeToXML()
        {
            //Create a folder
            //id is 1, name is folder1,
            // and holds two items
            folder folder = new folder("1","folder1",2);

            //dotnet uses a typed array to bind to xml
            //children. This is a nuisance as you need
            //to know the length of the array to
            //populate it before hand. In addition it
            //is the programmer's responsibility
            //to initialize the array
            file file1 = new file("1","file1");
            file1.contents="file1 conent";

            file file2 = new file("1","file2");
            file2.contents="file2 contents";

            folder.files[0]=file1;
            folder.files[1] = file2;
            return folder;
        }
//************************************************
//* print support
//************************************************
        static void printObjectAsXML(Object obj)
        {
            XmlSerializer x =
                new XmlSerializer(obj.GetType());
            x.Serialize(System.Console.Out,obj);
        }
    }//eof-class
}//eof-namespace

satya - Wednesday, June 13, 2007 10:33:19 AM

dotnet what are xml serialization attributes collections

Search for: dotnet what are xml serialization attributes collections

satya - Wednesday, June 13, 2007 10:39:58 AM

Attributes that control xml serialization

Attributes that control xml serialization

satya - Wednesday, June 13, 2007 10:41:58 AM

an example of arrays or collections


[XmlArrayItem(typeof(Manager)),
   XmlArrayItem(typeof(Employee))]
   public Employee[] Employees;

satya - Wednesday, June 13, 2007 10:52:53 AM

Or you can do this as well


[XmlArrayItem(typeof(Manager)),
   XmlArrayItem(typeof(Employee))]
   public ArrayList Employees;

satya - Wednesday, June 13, 2007 11:03:36 AM

another sample definition of classes


public class ColumnSpec
    {
        public String name;
        public String expression;
        public ColumnSpec() { }
        public ColumnSpec(String inName, String inExpression)
        {
            name = inName;
            expression = inExpression;
        }
    }//eof-class
    public class CQSpec
    {
        [XmlArrayItem(typeof(ColumnSpec))]
        public ArrayList columnSpecList = new ArrayList();
        public void addColumnSpec(String name, String expression)
        {
            columnSpecList.Add(new ColumnSpec(name, expression));
        }
    }//eof-class

satya - Wednesday, June 13, 2007 11:04:25 AM

exercising objects


public String getCQSpecAsXML()
        {
            CQSpec cqs = this.getCQSpec();
            XmlSerializer xs = new XmlSerializer(typeof(CQSpec));
            StringWriter sw = new StringWriter();
            xs.Serialize(sw, cqs);
            return sw.ToString();
        }
        public CQSpec getCQSpecFromXML(String xmlSpec)
        {
            XmlSerializer xs = new XmlSerializer(typeof(CQSpec));
            StringReader sr = new StringReader(xmlSpec);
            return (CQSpec)xs.Deserialize(sr);
        }