У меня есть ряд классов для создания XML-файла SEPA. Каждый класс по существу «ROOT» с его элементами сериализовать [XmlElement («NAME»)]Изменение имени элемента xml перед сериализацией
Один из моих классов под названием «OrgId» для элемента OrgId того же имени, которое вы видите в приведенном ниже XML
<GrpHdr>
<MsgId>0000001XXXXXXX</MsgId>
<CreDtTm>2014-04-30T15:08:04</CreDtTm>
<NbOfTxs>100</NbOfTxs>
<CtrlSum>500.00</CtrlSum>
<InitgPty>
<Id>
<OrgId>
<Othr>
<Id>IE01XXX999999</Id>
</Othr>
</OrgId>
</Id>
</InitgPty>
</GrpHdr>
Поэтому, как только я обновил все мои ценности и готова к сериализации моих классов как полный документ XML я пишу этот файл на жесткий диск, используя следующий код:
XmlSerializer serializer = new XmlSerializer(typeof(SEPABuilder.DefaultFileSection.Document));
try
{
using (TextWriter writer = new StreamWriter(@"C:\Xml.txt"))
{
serializer.Serialize(writer, doc, namespaces);
}
}
catch (Exception ex)
{
// DO SOMETHING WITH EXCEPTION
}
Однако, если я хочу изменить этого элемента t от «OrgId» до «PrvtId», как я могу это сделать?
Я пробовал наследовать базовый класс, но сериализация не работала бы с унаследованными классами. Затем я изучил это, и я попытался поместить [XmlType («NAME OF BASE CLASS»)] над классами, но это не сработало.
Я также думал о том, копию тех классов, которые составляют документ XML и использовать другое пространство имен для каждого, но это еще не правильно на всех и просто вызывают больше и больше ненужный работу.
Мне было интересно, есть ли способ изменить имя элемента на основе условия, до происходит сериализация и класс сохраняется как файл XML на моем жестком диске?
Благодаря