- rssfeeder_src.zip
- RSSFeeder
- RSSBlogAPI
- RSSCommon
- RSSFeeder.sln
- RSSFeeder
- RSSFeederResources
- RSSFeederSetup
- Messages.ico
- RSSFeederSetup.vdproj
- Test
- RSSStarter
- RSSTests
- Thirdparty
- AxInterop.DHTMLEDLib.dll
- AxInterop.SHDocVw.dll
- Eyefinder.dll
- GotDotNet.Exslt.dll
- HttpDownloader.dll
- Interop.DHTMLEDLib.dll
- Interop.SHDocVw.dll
- Interop.WindowsInstaller.dll
- Microsoft.ApplicationBlocks.Updater.ActivationProcessors.dll
- Microsoft.ApplicationBlocks.Updater.dll
- Microsoft.ApplicationBlocks.Updater.Downloaders.dll
- Microsoft.Practices.EnterpriseLibrary.Caching.dll
- Microsoft.Practices.EnterpriseLibrary.Common.dll
- Microsoft.Practices.EnterpriseLibrary.Configuration.dll
- Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.dll
- Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.Logging.dll
- Microsoft.Practices.EnterpriseLibrary.Logging.dll
- Microsoft.Practices.EnterpriseLibrary.Security.Cache.CachingStore.dll
- Microsoft.Practices.EnterpriseLibrary.Security.Cryptography.dll
- Microsoft.Practices.EnterpriseLibrary.Security.dll
- NotifyIconBalloon.dll
- SandBar.dll
- SandDock.dll
- SgmlReaderDll.dll
|
// Copyright � 2005 by Omar Al Zabir. All rights are reserved.
//
// If you like this code then feel free to go ahead and use it.
// The only thing I ask is that you don't remove or alter my copyright notice.
//
// Your use of this software is entirely at your own risk. I make no claims or
// warrantees about the reliability or fitness of this code for any particular purpose.
// If you make changes or additions to this code please mark your code as being yours.
//
// website http://www.oazabir.com, email OmarAlZabir@gmail.com, msn oazabir@hotmail.com
using System;
using System.Text;
using System.Xml;
using System.Xml.XPath;
using System.Xml.Xsl;
using System.Collections;
using System.IO;
using GotDotNet.Exslt;
using RSSBlogAPI;
namespace RSSFeeder.Helpers
{
/// <summary>
/// Helper class for XML related activities
/// </summary>
public class XMLHelper
{
public static ExsltTransform GetTransformer( string path )
{
ExsltTransform transform = (ExsltTransform) EntLibHelper.GetCachedObject( path );
if( null != transform )
{
return transform;
}
else
{
transform = new ExsltTransform();
transform.SupportedFunctions = ExsltFunctionNamespace.All;
transform.MultiOutput = false;
transform.Load(path);
EntLibHelper.StoreInCache( path, transform );
return transform;
}
}
/// <summary>
/// Transforms specified XML using the specified XSL file to the output stream
/// </summary>
/// <param name="xsltFile">Full path to an XSL file</param>
/// <param name="xml">A complete XML which can be loaded in a document</param>
/// <param name="outputStream">A stream where output will be written</param>
public static void TransformXml (string xsltFile, string xml, Stream outputStream)
{
ExsltTransform transformer = GetTransformer( xsltFile );
//ExsltTransform transformer = new ExsltTransform();
//transformer.Load(xsltFile);
try
{
using( StringReader stringReader = new StringReader( xml ) )
{
XmlTextReader xmlReader = new XmlTextReader( stringReader );
xmlReader.Namespaces = false;
XPathDocument document = new XPathDocument( xmlReader );
HtmlWriter writer = new HtmlWriter( outputStream, System.Text.Encoding.ASCII );
transformer.Transform( document, null, writer );
}
}
catch( Exception x )
{
ErrorReportForm.QueueErrorReport( new ErrorReportItem( x.Message, x.ToString() ) );
}
}
/// <summary>
/// Generates an XML file which contains a referene to the XSLT file which browsers
/// use to transform the XML automatically
/// </summary>
/// <param name="xsltFileName"></param>
/// <param name="xml"></param>
/// <param name="outputStream"></param>
public static void GenerateXMLForChannel( string xsltFileName, string xml, Stream outputStream )
{
// Prepare a header which includes reference to the XSLT file
string header = "<?xml version=\"1.0\" encoding=\"utf-8\"?><?xml-stylesheet type=\"text/xsl\" href=\"{0}\"?>";
StreamWriter writer = new StreamWriter( outputStream );
writer.WriteLine( string.Format( header, xsltFileName ) );
writer.WriteLine( xml );
writer.Flush();
}
}
}
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.