[英]XML Serialization different elementName for same object
我在 ASP.Net Core 中有以下模型
[Serializable]
[XmlRoot(ElementName = "CREDIT")]
public class Credit
{
[XmlElement(ElementName = "D_numbern")]
public string Number get; set; }
}
我用 StringWriter 進行了序列化,我應該得到這樣的 XML
<CREDITS>
<CREDIT ID="1">
<D_number1>06</D_number1>
</CREDIT>
<CREDIT ID="2">
<D_number2>06</D_number2>
</CREDIT>
</CREDITS>
我沒有找到如何為每個學分設置動態 n 的解決方案。 提前感謝您的任何幫助。
你所追求的不是XmlSerializer
支持的東西,坦率地說,它通常對 xml 來說是一個糟糕的設計; 它不僅是多余的(xml 是有序的:沒有必要告訴它您是項目 1/2/3),而且它對大多數 xml 工具(包括序列化器、模式驗證器等)充滿敵意。
我強烈的建議是重新考慮您想要的 xml,或者如果這不是您的想法,則挑戰這些要求。 如果D_number42
總是與ID="42"
匹配,那么坦率地說,后綴絕對沒有任何用處。 如果在這些例子中巧合的是一個不同的數字看起來相同,那么: <D_number someattribute="42">06</D_number>
但是,如果您必須這樣做,則必須通過XDocument
、 XmlDocument
或XmlWriter
手動完成。
作為使用XmlWriter
的示例:
static void WriteCredit(XmlWriter xml, string id, string number)
{
xml.WriteStartElement("CREDITS");
xml.WriteStartElement("CREDIT");
xml.WriteAttributeString("ID", id);
xml.WriteElementString("D_number" + id, number);
xml.WriteEndElement();
xml.WriteEndElement();
}
寫入控制台的用法:
using (var xml = XmlWriter.Create(Console.Out))
{
WriteCredit(xml, "1", "06");
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.