所以,我有一個類,其中包含這樣的物件串列:
public int SourceId { get; set; }
public int TargetId { get; set; }
public List<ExtraParameter> ExtraParameters { get; }
然后,當它被序列化為 XML 檔案時,輸出是這樣的:
<Connection>
<SourceId>0</SourceId>
<TargetId>1</TargetId>
<ExtraParameters>
<ExtraParameter>
<Input>0</Input>
<Output>1</Output>
<Enabled>true</Enabled>
</ExtraParameter>
<ExtraParameter>
<Input>1</Input>
<Output>0</Output>
<Enabled>true</Enabled>
</ExtraParameter>
</ExtraParameters>
</Connection>
但我需要使用 C# 的 XmlSerializer 將這個元素陣列(ExtraParameter)序列化為這種形式:
<Connection>
<SourceId>0</SourceId>
<TargetId>1</TargetId>
<ExtraParameter>
<Input>0</Input>
<Output>1</Output>
<Enabled>true</Enabled>
</ExtraParameter>
<ExtraParameter>
<Input>1</Input>
<Output>0</Output>
<Enabled>true</Enabled>
</ExtraParameter>
</Connection>
換句話說,我可以以某種方式僅列出該 ExtraParameters 串列中的專案,而無需在此層次結構中包含該串列嗎?所以看起來 ExtraParameters 中的物件只是列在 TargetID 節點的末尾。
編輯:是的,我知道,這有點破壞結構,但是這個 xml 檔案然后被下一個程式正確反序列化,我無法控制它。
uj5u.com熱心網友回復:
您可以通過將XmlElement屬性添加到相關屬性來執行此操作。根據檔案:
如果將 應用于
XmlElementAttribute回傳陣列的欄位或屬性,則陣列中的專案將被編碼為 XML 元素序列。
[XmlElement("ExtraParameter")]
public List<ExtraParameter> ExtraParameters { get; }
您還可以更改屬性名稱,而不是為ElementName屬性添加值。
請參閱此小提琴以獲取作業演示。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/447766.html
上一篇:使用C#在GameObject.transform.position[index]上設定值
下一篇:如何在c#中用字符填充鋸齒狀陣列
