Mega Code Archive

 
Categories / C# / XML
 

Xslt Transformation Helper

using System; using System.IO; using System.Collections.ObjectModel; using System.Collections.Generic; using System.Text; using System.Xml; using System.Xml.Xsl; using System.Xml.XPath; namespace A4G.Utils.Xml {   public class XsltTransformationHelper : IDisposable   {     private bool _disposed = false;     public XsltTransformationHelper(string xsltPath)     {       _xsltPath = xsltPath;       _xsltReader = new XmlTextReader(XsltPath);       XslTransform.Load(_xsltReader);     }     ~XsltTransformationHelper()     {       Dispose(false);     }     private readonly string _xsltPath;     public string XsltPath     {       get       {         return _xsltPath;       }     }     private XslCompiledTransform _transform = new XslCompiledTransform();     private XslCompiledTransform XslTransform     {       get       {         return _transform;       }     }     private readonly XmlReader _xsltReader;     private XmlReader XsltReader     {       get       {         return _xsltReader;       }     }     public byte[] TransformWithXslt(byte[] sourceBytes)     {       MemoryStream source = new MemoryStream(sourceBytes, false);       XmlReader xmlReader = new XmlTextReader(source);       MemoryStream destination = new MemoryStream();       byte[] destinationBytes = null;       try       {         XslTransform.Transform(xmlReader, null, destination);         destinationBytes = destination.ToArray();       }       finally       {         destination.Close();         xmlReader.Close();         source.Close();       }       return destinationBytes;     }     #region IDisposable Members     public void Dispose()     {       Dispose(true);       GC.SuppressFinalize(this);     }     private void Dispose(bool disposing)     {       if (_disposed)       {         return;       }       if (disposing)       {         // clean up managed resources         XsltReader.Close();       }       // clean up unmanaged resources       _disposed = true;     }     #endregion   } }