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
}
}
Related examples in the same category