मेरे पास एक ऐसा फ़ंक्शन है जो 2 पैरामीटर लेता है: 1 = एक्सएमएल फ़ाइल, 2 = एक्सएसएलटी फ़ाइल, फिर एक रूपांतरण करता है और परिणामस्वरूप एचटीएमएल देता है।सी # मेमोरी ऑब्जेक्ट पर लाइव xslt रूपांतरण कैसे करें?
/// <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();
}
मैं एक्सएमएल के लिए एक फ़ाइल को स्वीकार नहीं समारोह को बदलना चाहते हैं, लेकिन इसके बजाय सिर्फ एक वस्तु:
यहाँ कार्य है। ऑब्जेक्ट xslt के साथ बिल्कुल संगत है, अगर इसे फ़ाइल में क्रमबद्ध किया गया था। लेकिन मैं इसे पहले फ़ाइल में क्रमबद्ध नहीं करना चाहता हूं।
तो पुन: संक्षेप में: xslt को फ़ाइल से आते रहें, लेकिन एक्सएमएल इनपुट को एक ऑब्जेक्ट चाहिए जो मैं पास करता हूं और बिना किसी फ़ाइल सिस्टम इंटरैक्शन के एक्सएमएल उत्पन्न करना चाहता हूं।
मैंने अभी इसका उपयोग किया है, लेकिन मुझे यह इंगित करना होगा कि मुझे 'स्थिति' को' = 0' में बदलने की आवश्यकता है । अन्यथा यह उम्मीद के रूप में काम किया। =) – Dracorat