generare dinamicamente RDLC - Quello che mi impedisce di utilizzare uno StringBuilder per la costruzione del XML

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

Domanda

Sto costruendo un rapporto locale. A causa di alcune limitazioni della proprietà Hidden, ho bisogno di generare dinamicamente il rapporto.

Ho trovato un po 'di documentazione qui .

Il controllo ReportViewer ha bisogno di un corso d'acqua.

non mi piace molto il metodo che viene utilizzato nella documentazione. E la costruzione di un XmlDocument non è molto leggibile IMO.

C'è qualcosa che mi impedisce di farlo in questo modo

  

Programma di classe       {           static void Main (string [] args)           {               Genera rapporto();           }

    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();
    }
}
È stato utile?

Soluzione

Semplice: se si utilizza questo metodo, ad azioni specifiche di processore rilevano che i ws classe sbagliata utilizzati per generare la stringa, a quel punto la polizia di correttezza sono chiamati.

Scherzi a parte, non c'è niente che ti impedisce di farlo esattamente in quel modo; infatti, sotto le coperte si può scommettere c'è qualche codice nel generatore di XML più complicato che fa qualcosa di molto simile. Quando si arriva al dunque, XML è solo una stringa, e finché è ben formato, la stringa sarà la stessa, non importa come si costruisce.

Il vantaggio di altre classi è che sono più semplici e più flessibili quando si vuole costruire XML più complicato.


Ci sono quasi infinite classi che possono generare XML o XHTML. Per uno sguardo che ha un "interfaccia fluida". In un C ++ - come la lingua che potrebbe apparire come:

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

per generare

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

Ero alla ricerca di qualcosa di simile per HTML in questa domanda .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top