generare dinamicamente RDLC - Quello che mi impedisce di utilizzare uno StringBuilder per la costruzione del XML
-
22-08-2019 - |
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();
}
}
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 .