view Implab/Xml/XmlToJson.cs @ 265:74e048cbaac8 v3 v3.0.10

Restored lost JsonXmlCaseTransform from version 2.1
author cin
date Mon, 16 Apr 2018 19:43:18 +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);
        }


    }
}