Вы можете использовать ExtendedXmlSerializer . Эта поддержка сериализатора изменяет имя корневого элемента и имя свойства.
Если у вас есть такой класс:
[XmlRoot("dataNew")]
public class Data
{
[XmlElement("elmt1")]
public string Element1 { get; set; }
[XmlElement("elmnt2")]
public string Element2 { get; set; }
[XmlElement("elmtn3")]
public string Element3 { get; set; }
}
Вы можете сериализовать его:
ExtendedXmlSerializer serializer = new ExtendedXmlSerializer();
var obj = new Data
{
Element1 = "A",
Element2 = "B",
Element3 = "C",
};
var xml = serializer.Serialize(obj);
Ваш xml будет выглядеть так:
<?xml version="1.0" encoding="utf-8"?>
<dataNew type="Models.Example">
<elmt1>A</elmt1>
<elmnt2>B</elmnt2>
<elmtn3>C</elmtn3>
</dataNew>
ExtendedXmlSerializer имеет много других полезных функций:
- десериализация xml из стандартного XMLSerializer
- Класс сериализации с интерфейсом свойства
- Циркулярная ссылка и идентификационный номер сериализации
- десериализация старой версии xml
- Шифрование свойств
- Пользовательский сериализатор
ExtendedXmlSerializer поддерживает .net 4.5 и .net Core. Вы можете интегрировать его с WebApi и AspCore.