2014-10-15 2 views
1

У меня есть разные классы, которые мне нужно написать в XML для распространения в клиентских системах.Создание XML в C# с использованием шаблонов с заполнителями

Я знаю, что очевидным способом преобразования класса в C# является сериализация. В идеале я бы сделал это, но мой босс хочет, чтобы я использовал какую-то систему шаблонов.

Таким образом, у меня был бы шаблон (базовый пример), подобный приведенному ниже, и заменяющий теги по мере необходимости.

<Advert> 
<Title>{Title}</Title> 
<Description>{Description}</Description> 
[etc etc etc etc] 
</Advert> 

Я действительно не хочу, чтобы сделать это таким образом, но это жизнь :) Кто-нибудь есть хорошие предложения о том, как это сделать? Библиотеки и т. Д.? Надеюсь, что есть что-то более мощное, чем замена строки (и т. Д.), Но у них появилось ощущение, что так оно и есть!

EDIT:

То, что я должен был это указано, идея заключается в том, чтобы иметь возможность настроить шаблон XML без необходимости пересобрать приложения.

+0

Я хотел бы использовать Linq для XML –

ответ

0

Посмотрите на XDocument. Если я право читать ваш вопрос, вы можете сделать:

// Set these however you want 
string title = "{Title}" 
string description = "{Description}" 

XDocument xml = new XDocument(
    new XElement("Advert", 
     new XElement("Title", title), 
     new XElement("Description", description) 
     ...)); 
+0

К сожалению, я должен сказать, что идея чтобы иметь возможность изменять формат XML без необходимости перестраивать приложение. – Ali

+0

Получил это. Существуют различные методы в классах XDocument и XElement, которые позволяют вам изменять существующие элементы или добавлять новые элементы. Я оставлю это для вас, будут ли они работать для вашего приложения. –

2

Я хотел бы сделать это так

var parameters = new Dictionary<string, string> 
       { 
        {"Title", "Hello"}, 
        {"Description", "Descr1"} 
       }; 
string xml = "<Advert><Title>{Title}</Title><Description>{Description}</Description></Advert>"; 
var replaced = Regex.Replace(xml, @"\{(.+?)\}", m => parameters[m.Groups[1].Value]); 
+0

Простой и умный –

Смежные вопросы