|
This post originated from an RSS feed registered with .NET Buzz
by Adrian Florea.
|
Original Post: Le magie di XslCompiledTransform
Feed Title: Web Log di Adrian Florea
Feed URL: /error.aspx?aspxerrorpath=/adrian/Rss.aspx
Feed Description: "You know you've achieved perfection in design, not when you have nothing more to add, but when you have nothing more to take away." Antoine de Saint-Exupery
|
Latest .NET Buzz Posts
Latest .NET Buzz Posts by Adrian Florea
Latest Posts From Web Log di Adrian Florea
|
|
Appena ho visto la nuova XslCompiledTransform (in 2.0) è stato colpo di fulmine. E da questo esempietto fatto al volo, solo per rendere l'idea, capirete subito perché:
using System;
using System.Text;
using System.IO;
using System.Xml;
using System.Xml.Xsl;
class Test
{
static void Main()
{
string methodName = "Foo";
StringBuilder methodCode = new StringBuilder();
methodCode.AppendLine ("// ritorna la stringa Ciao ragazzi!");
methodCode.AppendFormat("public string {0}()", methodName);
methodCode.AppendLine ("{");
methodCode.AppendLine (" StringBuilder sb = new StringBuilder();");
methodCode.AppendLine (" sb.Append(\"Ciao \");");
methodCode.AppendLine (" sb.Append(\"ragazzi!\");");
methodCode.AppendLine (" return sb.ToString();");
methodCode.AppendLine ("}");
Console.WriteLine(ExecuteMethodCode(methodCode.ToString(), methodName));
}
static string ExecuteMethodCode(string methodCode, string methodName)
{
StringBuilder xsl = new StringBuilder();
StringBuilder result = new StringBuilder();
string prefix = "my-prefix";
string urn = "my-urn";
xsl.AppendLine("");
xsl.AppendLine(");
xsl.AppendLine("xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\"");
xsl.AppendLine("xmlns:msxsl=\"urn:schemas-microsoft-com:xslt\"");
xsl.AppendFormat("xmlns:{0}=\"urn:{1}\">", prefix, urn);
xsl.AppendFormat("", prefix);
xsl.AppendFormat("", methodCode);
xsl.AppendLine("");
xsl.AppendLine("");
xsl.AppendFormat("", prefix, methodName);
xsl.AppendLine("");
xsl.AppendLine("");
XmlDocument dummyXml = new XmlDocument();
dummyXml.CreateXmlDeclaration("1.0", null, null);
dummyXml.CreateElement(new Guid().ToString());
XmlReader reader = XmlReader.Create(new StringReader(xsl.ToString()));
XmlTextWriter writer = new XmlTextWriter(new StringWriter(result));
XslCompiledTransform compiledXsl = new XslCompiledTransform();
compiledXsl.Load(reader, XsltSettings.TrustedXslt, null);
compiledXsl.Transform(dummyXml, writer);
return result.ToString();
}
}
Cosa stampa a console? Ciao ragazzi! naturalmente... Bellissimo!
Read: Le magie di XslCompiledTransform