我构建了一系列用于创建SEPA XML文件的类。 每个班级基本上都是一个' ROOT'其元素序列化为[XmlElement(" NAME")]
我的一个课程名为' OrgId'对于您在下面的XML
中看到的同名OrgId元素<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
}
但是,如果我想从&#39; OrgId&#39;更改此元素名称到&#39; PrvtId&#39;我怎么能这样做?
我尝试继承基类,但序列化不适用于继承的类。 然后我调查了这个,并尝试将[XmlType(&#34;基本类别和#34;)]放在派生类之上,但这不起作用。
我还想过拥有构成xml文档并使用的类的副本 每个名称空间的名称不同,但根本不正确,只会导致 越来越多的不必要的工作。
我想知道是否有任何方法可以根据条件更改元素名称 序列化发生,类被保存为我的硬盘驱动器的XML文件?
由于
答案 0 :(得分:0)
好吧,这是UGLY的答案,但你总是可以序列化为字符串,然后根据你的条件替换字符串中的标签。但这是一种丑陋的做法。
根据我的经验,当你指定一个特殊的&#34;使用[XmlElement(&#34; Name&#34;)]的XMLElement的名称,反序列化器应该选择它并正确地反序列化回属性。