我與具有以下結構工作的XML:C#反序列化基礎上的一個元素的父節點的名稱
<fixture_statistics>
<home_player_1 id="2306143" teamid="2">
<element_1>Some Data</element_1>
<element_2>Some Data</element_2>
</home_player_1>
<home_player_2 id="2306144" teamid="2">
<element_1>Some Data</element_1>
<element_2>Some Data</element_2>
</home_player_2>
</fixture_statistics>
現在的代碼反序列化通常是這樣的:
[XmlRootAttribute("fixture_statistics", Namespace = "", IsNullable = false)]
public class FixtureRoot
{
[XmlElement("home_player_1")]
[XmlElement("home_player_2")]
public List<FixtureStats> fixtures { get; set; }
}
public class FixtureStats
{
public string element_1;
[XMLElement("element_2")]
public string elementTwo;
}
下面是問題:我想FixtureStats類有一個'position'屬性,它對應於父元素的名稱(所以FixtureStat對象對應於home_player_1的位置= 1)。 這可以通過內置序列化atrributes完成嗎?
如果不可能,最乾淨的解決方法是什麼?請記住,每個文檔將包含大約50個播放器元素,每個元素包含大約50個「子」數據元素。
這個Xml文檔的結構設計不佳。你能夠改變它,以便後綴被刪除嗎?如果不是,那麼我可以想到3種處理方式: - 通過刪除/重新創建後綴(添加額外步驟),實現IXmlSerializable接口(這很痛苦),使用Linq to Xml處理序列化(不會很通用,可以很快得到) – Pawel 2012-03-31 05:28:29
同意。 xml的格式不在我的控制之下,所以如果它不能像原樣那樣工作,那麼就需要一個轉換步驟。 – daveharnett 2012-03-31 10:04:46