la generación dinámica de RDLC - ¿Qué me impide utilizar un StringBuilder para construir el XML

StackOverflow https://stackoverflow.com/questions/872867

Pregunta

Estoy construyendo un informe local. Debido a algunas limitaciones de la propiedad oculto, lo que necesito para generar dinámicamente el informe.

He encontrado alguna documentación aquí .

El control ReportViewer necesita un flujo.

No me gusta mucho el método que se utiliza en la documentación. Y la construcción de un XmlDocument no es muy legible imo.

¿Hay algo me impide hacerlo así

  

class Program       {           static void main (String [] args)           {               Generar informe();           }

    static void GenerateReport(){        
        StringBuilder reportXml = new StringBuilder();

        reportXml.Append("<Report>");
        reportXml.Append("<PageHeight>8.5in</PageHeight>");            
        reportXml.Append("</Report>");          

        XmlDocument xmlDocument = new XmlDocument();

        xmlDocument.LoadXml(reportXml.ToString());

        xmlDocument.Save(@"C:\test.xml");
        xmlDocument.Save(Console.Out);

        Console.ReadLine();
    }
}
¿Fue útil?

Solución

simple: si se utiliza este método, las operaciones especiales en el procesador detectan que las ws clase equivocada utilizados para generar esa cadena, en cuyo momento la Policía de exactitud se llaman.

En serio, no hay nada que le impida hacerlo exactamente de esa manera; De hecho, bajo las sábanas se puede apostar que hay algo de código en el generador XML más complicado que hace algo muy parecido a eso. Al llegar a fin de cuentas, XML es sólo una cadena, y siempre que se bien formado, que la cadena va a ser el mismo, no importa cómo se construye.

La ventaja de otras clases es que son más simples y más flexible cuando se quiere construir más complicada XML.


Hay casi un número infinito de clases que pueden generar XML o XHTML. Busque uno que tiene una "interfaz fluida". En un C ++ - como el lenguaje que podría ser:

  XMLOutStream foo("filename.xml);
  foo.group("Top","attr=val")
     .group("Next")
     .line("Another", "attr=val") ;

para generar

 <Top>
   <Next attr="val">
      <Another attr="val" />
   </Next>
 </Top>

Yo estaba buscando algo similar para HTML en esta pregunta .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top