Monday, January 10, 2011

Serialize and deserialize an xml file and convert to xsd

http://msdn.microsoft.com/en-us/library/2baksw0z.aspx  on Controlling XML Serialization Using Attributes


- Convert an xml file to xsd by using the VS command promt xsd.exe /c filename.xml to get xsd
- convert from an xsd to .net class xsd.exe /c filename.xsd to get .cs file


can use XmlWriterSettings settings = new XmlWriterSettings();


settings.Indent = true;

settings.OmitXmlDeclaration = true;

settings.NewLineOnAttributes = true;



writer = XmlWriter.Create(Console.Out, settings);




public void SaveParamViewLayout()


{

TextWriter writer = null;

try

{

string fileNameGridLayout = Path.Combine(Path.GetDirectoryName(Application.ExecutablePath), Path.Combine(QTM.FeatureConfigInfo.ConfigDirectory, ConfigFileNameConst.TTD_PARAM_VIEW_LAYOUT_FNAME));

ParamViewLayout currLayout = new ParamViewLayout(ultraGridInput.Size, ultraGridOutput.Size);

writer = new StreamWriter(fileNameGridLayout);

System.Xml.Serialization.XmlSerializer x = new System.Xml.Serialization.XmlSerializer(typeof(ParamViewLayout));



//serialize it to the file

x.Serialize(writer, currLayout);

writer.Close();

}

catch

{ }

finally

{

if (writer != null)

writer.Close();

}

}



private void RestoreParamViewLayout()

{

FileStream fs = null;

try

{

string fileNameGridLayout = Path.Combine(Path.GetDirectoryName(Application.ExecutablePath), Path.Combine(QTM.FeatureConfigInfo.ConfigDirectory, ConfigFileNameConst.TTD_PARAM_VIEW_LAYOUT_FNAME));

if (File.Exists(fileNameGridLayout))

{

ParamViewLayout layout;

System.Xml.Serialization.XmlSerializer x = new System.Xml.Serialization.XmlSerializer(typeof(ParamViewLayout));

fs = new FileStream(fileNameGridLayout, FileMode.Open);



layout = (ParamViewLayout)x.Deserialize(fs);

fs.Close();

ultraGridInput.Dock = DockStyle.None;

ultraGridOutput.Dock = DockStyle.None;

ultraGridInput.Size = layout.inputParamSize;

ultraGridOutput.Size = layout.outputParamSize;

ultraGridInput.Dock = DockStyle.Fill;

ultraGridOutput.Dock = DockStyle.Bottom;



}

}

catch //(Exception)

{

//ignore this exception

}

finally

{

if (fs != null)

fs.Close();

}

}

No comments:

Post a Comment