【发布时间】:2020-09-26 21:57:35
【问题描述】:
我需要以 2 种不同的方式将我的 Invoice 模型序列化为 Xml。
第一个序列化应该有“FirsName”作为根元素。
第二个“SecondName”。
有不同的实现方式,但我不知道如何实现它们。
要么避免根元素并手动添加它, 或者以某种方式动态预设它。
这是我的模型:
public class InvoiceInfo : IXmlSerializable
{
public int InvoiceId { get; set; }
}
根据条件我想像这样序列化它:
<firstRoot>
<invoiceId value="123" />
</firstRoot>
或
<secondRoot>
<invoiceId value="123" />
</secondRoot>
也许可以通过调整 XmlWriter.Settings 解决?
我找到了这种方法,但它看起来很难看。因为它有点后期处理......
var duplicate = XDocument.Parse(xmlDocument.InnerXml);
duplicate.Root.Name = "newRootName";
var res = duplicate.ToString();
【问题讨论】:
-
您应该有一个基类根,其中包含两个继承类 firstRoot 和 secondRoot。然后使用 XmlInclude。请参阅:docs.microsoft.com/en-us/dotnet/api/…
标签: c# xml ixmlserializable