Мне нужно создать XML-файл на C#.
Я хочу написать код, который генерирует это, в файле, который в основном представляет собой XML с кодом внутри него, как я могу на странице ASP.NET MVC.
Итак, мне нужен файл кода, который выглядит так:
<lots of angle brackets...>
<% foreach(data in myData)
{ %>
< <%= data.somefield %>
<% } %>
More angle brackets>
Это сгенерирует мой XML-файл. Я был бы не против использовать часть System.Web, если кто-нибудь скажет мне, как я могу это сделать без накладных расходов на IIS или без создания веб-файла.
Я хочу использовать шаблоны, и я хочу, чтобы шаблоны были похожи на ASP.NET.
Вопрос не в том, как создать XML на C#. Он спрашивает, как создать XML на C# с использованием шаблонов, аналогичных ASP.NET.





Создайте PageView в стандартном файле ASPX, но не включайте мастер или что-либо еще. Просто начните вставлять угловые скобки и все остальное. Единственное, что вам нужно сделать, это установить тип контента. Но это можно сделать в вашем действии, вызвав Response.ContentType = "text / xml";
Здесь есть XSLT View Enging в MvcContrib: http://mvccontrib.googlecode.com/svn/trunk/src/MvcContrib.XsltViewEngine/
Вероятно, это даст вам то, что вам нужно.
(на самом деле любой из механизмов просмотра будет работать ... хотя механизм просмотра WebForms будет жаловаться, что то, что вы пишете, не является допустимым HTML.
Во-первых, его НАМНОГО проще сгенерировать XML с помощью XElements. Есть много примеров. Просто выполните поиск по запросу «Linq to XML».
В качестве альтернативы, если вам абсолютно необходимо создавать шаблоны, я бы предложил использовать механизм шаблонов, такой как NVelocity, вместо того, чтобы пытаться заставить ASP.NET делать это за вас.
Самый простой способ сделать это из кода - использовать класс XMLWriter в System.Xml.
Учебник здесь.
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
settings.IndentChars = (" ");
using (XmlWriter writer = XmlWriter.Create("books.xml", settings))
{
// Write XML data.
writer.WriteStartElement("book");
writer.WriteElementString("price", "19.95");
writer.WriteEndElement();
writer.Flush();
}
В дополнение к вышесказанному - используйте новые классы XML, поставляемые с Linq - они значительно упрощают создание XML логическим способом, хотя вы не дойдете до чего-то похожего на шаблон в C#.
Если вам действительно нужен такой шаблон, как тогда - и я знаю, что это не обязательно будет хорошо - вам следует посмотреть на выполнение этой части системы в VB.NET, где делает имеет явную поддержку шаблона, такого как создание XML, как часть Реализация Linq в XML. По крайней мере, вы должны посмотреть, что предлагает VB.NET, прежде чем отказываться от этого.
Природа .NET означает, что вам не нужно использовать VB.NET для чего-либо еще, вы можете ограничить его классом (ами), необходимым для генерации XML, и его «универсальным» в том смысле, в котором он поставляется. NET и окружающая логика должны быть понятны любому компетентному .NET-программисту.
Приятно знать, почему это отвергается, потому что это тщательно квалифицированный и РАЗУМНЫЙ ответ на вопрос для компетентного .NET-разработчика.
Что здесь не так? Я вижу, как многие совершенно жизнеспособные решения сводятся к отрицательным ...