繁体   English   中英

从 C# XML 函数返回 byte[]

[英]Return byte[] from C# XML function

此函数使用 XSL 将 XML 转换为 HTML。 我需要保存在内存中创建的 HTML 以备后用

public void CreateHtml(string xmlRoute, string xlsRoute)
    {
        ByteArrayOutputStream bote = new ByteArrayOutputStream();
        // Cargamos la hoja de estilo que utilizaremos
        XslTransform xslt = new XslTransform();
        xslt.Load(xlsRoute);
        //Carga el archivo que deseamos transformar.
        XPathDocument doc = new XPathDocument(xmlRoute);
        //Instanciamos XmlTextWriter con una consola de salida.
        XmlWriter writer = new XmlTextWriter(Console.Out);
        xslt.Transform(doc, null, writer, null);
        writer.Close();
        //Declarar y crear un nuevo objeto XslCompiledTransform
        XslCompiledTransform transform = new XslCompiledTransform();
        //Cargamos el Xls que utilizaremos
        transform.Load(xlsRoute);
        //Generamos nuestro Html
        transform.Transform(xmlRoute, "Prueba002.pdf");
    }

目的是将函数类型更改为 byte[] 并将 html 作为 byteArray 返回。 我基于此 Java 代码

public byte[] createHtml(String xmlPath, String xslPath) throws IOException, TransformerException {
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    Writer writer = new OutputStreamWriter(baos);
    StreamSource xml = new StreamSource(new File(xmlPath));
    StreamSource xsl = new StreamSource(new File(xslPath));
    TransformerFactory factory = TransformerFactory.newInstance();
    Transformer transformer = factory.newTransformer(xsl);
    transformer.transform(xml, new StreamResult(writer));
    writer.flush();
    writer.close();
    return baos.toByteArray();
}

我从方法中删除了不相关的代码,只留下确切回答问题的内容。

public byte[] CreateHtml(string xmlRoute, string xlsRoute)
{
    var xslt = new XslCompiledTransform();
    xslt.Load(xlsRoute);

    using (var stream = new MemoryStream())
    using (var writer = XmlWriter.Create(stream))
    {
        xslt.Transform(xmlRoute, writer);

        return stream.ToArray();
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM