Csharp/C Sharp by API/System.Xml.Serialization/XmlSerializer
new XmlSerializer
using System;
using System.Xml;
using System.Xml.Serialization;
using System.IO;
public class SerializeXml {
private static void Main() {
CarList catalog = new CarList("New List", DateTime.Now.AddYears(1));
Car[] cars = new Car[2];
cars[0] = new Car("Car 1", 12342.99m);
cars[1] = new Car("Car 2", 21234123.9m);
catalog.Cars = cars;
XmlSerializer serializer = new XmlSerializer(typeof(CarList));
FileStream fs = new FileStream("CarList.xml", FileMode.Create);
serializer.Serialize(fs, catalog);
fs.Close();
catalog = null;
// Deserialize the order from the file.
fs = new FileStream("CarList.xml", FileMode.Open);
catalog = (CarList)serializer.Deserialize(fs);
// Serialize the order to the Console window.
serializer.Serialize(Console.Out, catalog);
}
}
[XmlRoot("carList")]
public class CarList {
[XmlElement("catalogName")]
public string ListName;
// Use the date data type (and ignore the time portion in the serialized XML).
[XmlElement(ElementName="expiryDate", DataType="date")]
public DateTime ExpiryDate;
[XmlArray("cars")]
[XmlArrayItem("car")]
public Car[] Cars;
public CarList() {
}
public CarList(string catalogName, DateTime expiryDate) {
this.ListName = catalogName;
this.ExpiryDate = expiryDate;
}
}
public class Car {
[XmlElement("carName")]
public string CarName;
[XmlElement("carPrice")]
public decimal CarPrice;
[XmlElement("inStock")]
public bool InStock;
[XmlAttributeAttribute(AttributeName="id", DataType="integer")]
public string Id;
public Car() {
}
public Car(string carName, decimal carPrice) {
this.CarName = carName;
this.CarPrice = carPrice;
}
}
XmlSerializer.Deserialize
using System;
using System.Xml;
using System.Xml.Serialization;
using System.IO;
public class MainClass
{
private static void Main()
{
// Create the product catalog.
ProductCatalog catalog = new ProductCatalog("New Catalog", DateTime.Now.AddYears(1));
Product[] products = new Product[2];
products[0] = new Product("Product 1", 42.99m);
products[1] = new Product("Product 2", 202.99m);
catalog.Products = products;
// Serialize the order to a file.
XmlSerializer serializer = new XmlSerializer(typeof(ProductCatalog));
FileStream fs = new FileStream("ProductCatalog.xml", FileMode.Create);
serializer.Serialize(fs, catalog);
fs.Close();
catalog = null;
fs = new FileStream("ProductCatalog.xml", FileMode.Open);
catalog = (ProductCatalog)serializer.Deserialize(fs);
serializer.Serialize(Console.Out, catalog);
}
}
[XmlRoot("productCatalog")]
public class ProductCatalog
{
[XmlElement("catalogName")]
public string CatalogName;
[XmlElement(ElementName="expiryDate", DataType="date")]
public DateTime ExpiryDate;
[XmlArray("products")]
[XmlArrayItem("product")]
public Product[] Products;
public ProductCatalog()
{
}
public ProductCatalog(string catalogName, DateTime expiryDate)
{
this.CatalogName = catalogName;
this.ExpiryDate = expiryDate;
}
}
public class Product
{
[XmlElement("productName")]
public string ProductName;
[XmlElement("productPrice")]
public decimal ProductPrice;
[XmlElement("inStock")]
public bool InStock;
[XmlAttributeAttribute(AttributeName="id", DataType="integer")]
public string Id;
public Product()
{
}
public Product(string productName, decimal productPrice)
{
this.ProductName = productName;
this.ProductPrice = productPrice;
}
}
XmlSerializer.Serialize
using System;
using System.Collections;
using System.Data;
using System.IO;
using System.Xml;
using System.Xml.Serialization;
class MainClass{
public static void Main(){
try {
ShapedRoot sr = new ShapedRoot();
sr.node = new Shaped();
sr.node.s1 = "a value";
sr.node.s2 = "another value";
sr.node.s3 = "uuid:1AE0964A-2B30-4a02-96F2-325B92B4E92C";
StringWriter sw = new StringWriter();
XmlTextWriter tw = new XmlTextWriter( sw );
tw.Formatting = Formatting.Indented;
tw.Indentation = 4;
XmlSerializer ser = new XmlSerializer( typeof( ShapedRoot ) );
ser.Serialize( tw, sr );
tw.Close();
sw.Close();
}
catch( Exception exc )
{
Console.WriteLine( exc.Message );
}
}
}
[XmlRoot( ElementName="sroot", Namespace="urn:my-examples:shaping" )]
public class ShapedRoot
{
public ShapedRoot()
{
}
public Shaped node;
}
[XmlType( Namespace="urn:my-examples:shaping" )]
public class Shaped
{
public Shaped()
{
}
[XmlAttribute]
public string s1;
[XmlElement( ElementName = "string2" )]
public string s2;
[XmlElement( DataType = "anyURI" )]
public string s3;
}