Преобразование Xml в действительные фрагменты HTML через Xslt с использованием класса .NET XslCompiledTransform - PullRequest
2 голосов
/ 29 июня 2011

Я пытаюсь использовать XslCompiledTransform в библиотеке классов .NET для преобразования строки XML в строку HTML.Учтите, что я хочу использовать обычные строки, а не файлы.

Как мне это сделать?

Кажется, что XslCompiledTransform работает только с файлами ...

Ответы [ 2 ]

4 голосов
/ 29 июня 2011

Load() также принимает XmlReader, а Transform() принимает большинство комбинаций ввода XmlReader и XmlWriter, TextWriter и Stream в качестве вывода.

Так, как правило,вы можете использовать StringWriter для вывода и XmlReader, созданный из StringReader для ввода.

Полный пример, без файлов:

string xslt = @"<xsl:stylesheet version=""1.0"" xmlns:xsl=""http://www.w3.org/1999/XSL/Transform"">
<xsl:output method=""html"" indent=""no""/>
<xsl:template match=""*"">
<p>some html</p>
</xsl:template>
</xsl:stylesheet>", xml = @"<xml>boo</xml>";

var transform = new XslCompiledTransform();
using (var sr = new StringReader(xslt))
using (var xr = XmlReader.Create(sr))
{
    transform.Load(xr);
}

using (var sw = new StringWriter())
using (var sr = new StringReader(xml))
using (var xr = XmlReader.Create(sr))
{
    transform.Transform(xr, null, sw);
    string html = sw.ToString();
}
0 голосов
/ 22 августа 2013

Я использую xslt и xml в виде строки, которая генерируется на той же странице .aspx, а затем преобразуется в html с помощью StringWriter, используется литеральный элемент управления для отображения html, привязывает к нему данные Stringwriter.

string xslt = "Добавить свой код для xslt здесь"; // ищем любой нормальный файл xslt.

string xml = "Добавьте свой код для xml здесь"; // ищем любой нормальный файл xml.

        XslCompiledTransform transform = new XslCompiledTransform();

        StringReader sr = new StringReader(xslt);

        XmlReader xr = XmlReader.Create(sr);

        transform.Load(xr);


        StringReader srxml = new StringReader(xml);

        XmlReader xrxml = XmlReader.Create(srxml);

        StringWriter writer = new StringWriter();

        transform.Transform(xrxml, null, writer);

        Literal1.Text = writer.ToString();

        writer.Close();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...