コード例 #1
0
ファイル: NlmSerializer.cs プロジェクト: jayasimhas/Suseela
        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();
            }
        }
コード例 #2
0
        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);
        }