Динамическая генерация RDLC - Что мешает мне использовать StringBuilder для построения XML - PullRequest
1 голос
/ 16 мая 2009

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

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

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

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

Есть ли что-то, что мешает мне сделать это так

Программа занятий { static void Main (строка [] 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();
    }
}

1 Ответ

1 голос
/ 16 мая 2009

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

Серьезно, ничто не мешает вам делать это именно так; на самом деле, под покровом можно заключить, что в более сложном генераторе 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 в этом вопросе .

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