猿问

将 xml 和 xsl 作为字符串传递以在 xslt 3 中进行处理

我正在使用 xslt 3.0 saxon-HE 9.8 库将 xml 转换为 html。在 c# 代码中使用它。


我在输入中传递 xml 和 xslt 文件路径以使其转换并获得输出。


任何人都可以让我知道如何将 xml 作为字符串传递,并将 xslt 作为字符串传递给 c# 代码中的输入以进行处理。


下面是我的代码。


public static string Transform_XML(string param, string inputfile, string xsltfilename)

    {

        var xslt = new FileInfo(xsltfilename);

        var input = new FileInfo(inputfile);


        // Compile stylesheet

        var processor = new Processor();

        var compiler = processor.NewXsltCompiler();

        var executable = compiler.Compile(new Uri(xslt.FullName));


        XPathDocument doc = new XPathDocument(new StringReader(param));

        DocumentBuilder db = processor.NewDocumentBuilder();

        XdmNode xml;

        using (XmlReader xr = XmlReader.Create(new StringReader(param)))

        {

            xml = db.Build(xr);

        }


        // Do transformation to a destination

        var destination = new DomDestination();

        using (var inputStream = input.OpenRead())

        {

            var transformer = executable.Load();

            transformer.SetParameter(new QName("", "", "user_entry"), xml);

            transformer.SetInputStream(inputStream, new Uri(input.DirectoryName));

            transformer.Run(destination);

        }


        return destination.XmlDocument.InnerXml.ToString();

    }

想要将 xml 和 xslt 作为字符串而不是文件路径传递。


繁星淼淼
浏览 213回答 1
1回答

波斯汪

该XsltTransformer有一个方法SetInputStream(),允许你提供输入作为流(确实你可能在使用哪个)。这篇文章如何从字符串生成流?告诉您如何从字符串创建流。
随时随地看视频慕课网APP
我要回答