Skip to content

Instantly share code, notes, and snippets.

@JeffreyZhao
Created January 3, 2010 13:47
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save JeffreyZhao/267978 to your computer and use it in GitHub Desktop.
Save JeffreyZhao/267978 to your computer and use it in GitHub Desktop.
#light
module XmlSerialization
open System
open System.IO
open System.Xml
open System.Xml.Linq
open System.Xml.Serialization
open System.Runtime.Serialization
type Post() =
[<DefaultValue>]
val mutable Title : string
[<DefaultValue>]
val mutable Content : string
[<DefaultValue>]
val mutable Tags : string array
member p.ToXml() =
let xml = new XElement(XName.Get("Post"))
xml.Add(new XElement(XName.Get("Title"), p.Title))
xml.Add(new XElement(XName.Get("Content"), p.Content))
let tagElements = p.Tags |> Array.map (fun t -> new XElement(XName.Get("Tag"), t))
xml.Add(new XElement(XName.Get("Tags"), tagElements))
xml.ToString()
let byXmlSerializer (graph : 'a) =
let serializer = new XmlSerializer(typeof<'a>)
let writer = new StringWriter()
serializer.Serialize(writer, graph)
writer.ToString()
let serialize (graph : 'a) =
let serializer = new DataContractSerializer(typeof<'a>)
let textWriter = new StringWriter();
let xmlWriter = new XmlTextWriter(textWriter);
serializer.WriteObject(xmlWriter, graph)
textWriter.ToString()
let deserialize<'a> xml =
let serializer = new DataContractSerializer(typeof<'a>)
let textReader = new StringReader(xml)
let xmlReader = new XmlTextReader(textReader)
serializer.ReadObject(xmlReader) :?> 'a
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment