view Implab/Xml/XmlToJson.cs @ 278:6691aff01de1 v3

Implab: added XmlDefaultSeializer (SerializersPool is now obsolete) Implab.ServiceHost: rewritten TypeReference (added support for nested types), stable API
author cin
date Thu, 03 May 2018 09:59:44 +0300
parents 3a6e18c432be
children
line wrap: on
line source

using System;
using System.IO;
using System.Reflection;
using System.Xml;
using System.Xml.Xsl;
using Implab.Components;
using Implab.Formats.Json;

namespace Implab.Xml {
    public class XmlToJson {
        const string XmlToJsonTransformId = "Implab.Xml.json.xsl";

        static LazyAndWeak<XslCompiledTransform> m_default = new LazyAndWeak<XslCompiledTransform>(CreateTransform, true);

        public static XslCompiledTransform Default {
            get { return m_default.Value; }
        }

        protected static XslCompiledTransform CreateTransform() {
            var transform = new XslCompiledTransform();
            using(var reader = XmlReader.Create(GetDefaultTransform())) {
                transform.Load(reader);
            }
            return transform;
        }

        protected static Stream GetDefaultTransform() {
            return Assembly.GetExecutingAssembly().GetManifestResourceStream(XmlToJsonTransformId);
        }


    }
}