Динамическое создание RDLC. Что мешает мне использовать StringBuilder для создания XML

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

Вопрос

Я создаю локальный отчет.Из-за некоторых ограничений свойства Hidden мне необходимо динамически генерировать отчет.

Я нашел некоторую документацию здесь.

Элементу управления ReportViewer нужен поток.

Мне не очень нравится метод, используемый в документации.И по моему мнению, создание XmlDocument не очень читабельно.

Что-то мешает мне сделать это вот так?

Class Program {static void main (string [] args) {generateReport ();}

    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();
    }
}
Это было полезно?

Решение

Простой:Если вы используете этот метод, специальные операции процессора обнаруживают, что для генерации этой строки использовался неправильный класс, и в этот момент вызывается полиция корректности.

Серьезно, ничто не мешает вам сделать это именно так;на самом деле, вы можете быть уверены, что в более сложном генераторе XML скрывается некоторый код, который делает что-то очень похожее.Если разобраться, XML — это просто строка, и пока она правильно сформирована, эта строка будет одинаковой, независимо от того, как вы ее создадите.

Преимущество других классов в том, что они проще и гибче, если вам нужно создать более сложный XML.


Существует почти бесконечное множество классов, которые могут генерировать XML или XHTML.Ищите тот, у которого есть «свободный интерфейс».На C++-подобном языке это может выглядеть так:

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

генерировать

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

Я искал что-то подобное для HTML в этот вопрос.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top