我有一个函数,需要传入两个参数:1 = XML文件,2 = XSLT文件,然后执行转换并返回生成的HTML。
下面是这个函数:
/// <summary>
/// Will apply an XSLT style to any XML file and return the rendered HTML.
/// </summary>
/// <param name="xmlFileName">
/// The file name of the XML document.
/// </param>
/// <param name="xslFileName">
/// The file name of the XSL document.
/// </param>
/// <returns>
/// The rendered HTML.
/// </returns>
public string TransformXml(string xmlFileName, string xslFileName)
{
var xtr = new XmlTextReader(xmlFileName)
{
WhitespaceHandling = WhitespaceHandling.None
};
var xd = new XmlDocument();
xd.Load(xtr);
var xslt = new System.Xml.Xsl.XslCompiledTransform();
xslt.Load(xslFileName);
var stm = new MemoryStream();
xslt.Transform(xd, null, stm);
stm.Position = 1;
var sr = new StreamReader(stm);
xtr.Close();
return sr.ReadToEnd();
}
我希望更改该函数的功能,使其不再接受XML文件,而是仅接受一个对象作为输入。 如果将对象序列化为文件,则该对象与XSLT完全兼容。但我不想先将其序列化到文件中。
因此,简要概括一下:保留来自文件的XSLT,但XML输入应该是我传递的对象,并且希望能够生成XML,而无需进行任何文件系统交互。
Position
更改为= 0
。否则它按预期工作。=) - Dracorat