反序列化我有這樣的XML:C#與IXmlSerializable的
<data>
<audit_values>
<audit_value>
<channel>2</channel>
<week>
<mo_th>6,501698000000</mo_th>
<fr>8,414278000000</fr>
<sa>9,292674000000</sa>
<sun>8,551982000000</sun>
<holid>7,164605000000</holid>
</week>
</audit_value>
<audit_value>
<channel>1</channel>
<week>
<mo_th>6,501698000000</mo_th>
<fr>8,414278000000</fr>
<sa>9,292674000000</sa>
<sun>8,551982000000</sun>
<holid>7,164605000000</holid>
</week>
</audit_value>
</audit_values>
</data>
,我需要它反序列化類。 但問題是,這周將在未來的變化(這將是包含更多的元素,並把它們的名字我不知道)
數據:
[XmlRoot("data")]
public class Data
{
[XmlArray("audit_values")]
[XmlArrayItem("audit_value", IsNullable = true)]
public AuditValue[] AuditValues { get; set; }
}
AuditValue:
[XmlRoot("audit_value")]
public class AuditValue
{
[XmlElement("week", typeof(TVR))]
public Week Week;
}
周:
[XmlRoot("week")]
public class Week : IXmlSerializable
{
public Dictionary<string, double> Values = new Dictionary<string, double>();
public XmlSchema GetSchema()
{
return null;
}
public void ReadXml(XmlReader reader)
{
reader.Read();
var sub = reader.ReadSubtree();
do
{
if (sub.NodeType == XmlNodeType.Element)
{
string name = sub.Name;
string val = sub.ReadElementContentAsString();
Values.Add(name, Convert.ToDouble(val));
}
} while (sub.Read());
}
public void WriteXml(XmlWriter writer)
{
}
}
但deserializat後離子我只有一個元素,只有一個字典值中記錄。我做錯了什麼?
GitHub上: https://github.com/olegletynain/XmlTest/tree/master/XmlTestRead
[使用XmlSerializer反序列化隨機/未知類型](http:// stackoverflow。com/questions/8210386/deserialize-random-unknown-types-with-xmlserializer) – GSerg
對不起,但我在實現IXmlSerializable時遇到了問題,並且沒有未知類型。它不是重複的 –
您是否嘗試添加斷點並調試代碼? –