Как создать XML-файл с использованием шаблонов, аналогичных ASP.NET

Мне нужно создать 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.

Что здесь не так? Я вижу, как многие совершенно жизнеспособные решения сводятся к отрицательным ...

Sklivvz 30.09.2008 19:49

Вопрос не в том, как создать XML на C#. Он спрашивает, как создать XML на C# с использованием шаблонов, аналогичных ASP.NET.

Peter 30.09.2008 20:52
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
2
1 235
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

Создайте 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-разработчика.

Murph 06.10.2008 15:14

Другие вопросы по теме