Tôi có một hàm lấy 2 tham số: 1 = tệp XML, 2 = tệp XSLT, sau đó thực hiện phép chuyển đổi và trả về kết quả HTML.C# Làm thế nào để thực hiện một phép chuyển đổi xslt trực tiếp trên một đối tượng bộ nhớ?
Dưới đây là các chức năng:
/// <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();
}
Tôi muốn thay đổi các chức năng không chấp nhận một tập tin cho XML, mà thay vào đó chỉ là một đối tượng. Đối tượng là chính xác tương thích với xslt, nếu nó được tuần tự hóa thành tệp. Nhưng tôi không muốn phải serialize nó vào một tập tin đầu tiên.
Vì vậy, để tóm tắt: giữ xslt đến từ một tập tin, nhưng đầu vào xml nên một đối tượng tôi vượt qua và muốn tạo xml mà không có bất kỳ tương tác hệ thống tập tin.
Tôi chỉ sử dụng điều này, nhưng phải chỉ ra rằng tôi cần thay đổi 'Position' thành' = 0' . Nếu không, nó hoạt động như mong đợi. =) – Dracorat