public void Serialize(NlmArticleModel model, Stream output) { var xmlSerializer = new XmlSerializer(typeof(NlmArticleModel)); var headerStream = new MemoryStream(); using (var writer = new XmlTextWriter(headerStream, Encoding.UTF8)) { writer.WriteStartDocument(false); writer.WriteDocType("article", null, "journalpub-cals3.dtd", null); writer.Flush(); headerStream.Seek(0, SeekOrigin.Begin); headerStream.CopyTo(output); } var settings = new XmlWriterSettings { OmitXmlDeclaration = true }; using (var writer = XmlWriter.Create(output, settings)) { var namespaces = new XmlSerializerNamespaces(); namespaces.Add("mml", "http://www.w3.org/1998/Math/MathML"); namespaces.Add("xlink", "http://www.w3.org/1999/xlink"); xmlSerializer.Serialize(writer, model, namespaces); writer.Flush(); } }
public void Serialize_BasicModel_CanRoundTrip() { var model = new NlmArticleModel { ArticleType = "top" }; var serializer = new NlmSerializer(); var stream = new MemoryStream(); serializer.Serialize(model, stream); stream.Seek(0, SeekOrigin.Begin); var text = new StreamReader(stream, Encoding.UTF8).ReadToEnd(); stream.Seek(0, SeekOrigin.Begin); var modelFromText = (NlmArticleModel) new XmlSerializer(typeof(NlmArticleModel)).Deserialize(stream); stream = new MemoryStream(); serializer.Serialize(modelFromText, stream); stream.Seek(0, SeekOrigin.Begin); var roundTrippedText = new StreamReader(stream, Encoding.UTF8).ReadToEnd(); Assert.AreEqual(text, roundTrippedText); }