[英]XML Serializing a class with a Dictionary<string, List<string>> object
是否可以實現IXmlSerializable並在我的XML文件中捕獲一個Dictionary>類型的對象?
我有以下
public class coolio : IXmlSerializable
{
private int a;
private bool b;
private string c;
private Dictionary<string, List<string>> coco;
public coolio(int _a, bool _b, string _c, Dictionary<string, List<string>> _coco)
{
a=_a;
b=_b;
c=_c;
coco=_coco;
}
public System.Xml.Schema.XmlSchema GetSchema()
{
return null;
}
public void WriteXml(XmlWriter writer)
{
const string myType = "coolio";
writer.WriteStartElement(myType);
writer.WriteAttributeString("a", a.ToString());
writer.WriteAttributeString("b", b.ToString());
writer.WriteAttributeString("c", c);
// How do I add a subelement for Dictionary<string, List<string>> coco?
writer.WriteEndElement();
}
public void ReadXml(XmlReader reader)
{
if (reader.MoveToContent() != XmlNodeType.Element || reader.LocalName != "coolio")
return;
a= int.Parse(reader["a"]);
b = bool.Parse(reader["b"]);
c= reader["c"];
// How do I read subelement into Dictionary<string, List<string>> coco?
}
}
但是我對如何添加Dictionary>(將XML序列化到我的XML文件)感到困惑
writer.WriteStartElement("CocoKeys");
foreach (var kvp in coco)
{
writer.WriteStartElement("CocoKey");
writer.WriteAttributeString("key", kvp.Key);
writer.WriteStartElement("CoCoValues");
foreach(string s in kvp.Value)
{
writer.WriteStartElement("CoCoValue");
writer.WriteString(s);
writer.WriteEndElement();
}
writer.WriteEndElement();
writer.WriteEndElement();
writer.WriteEndElement();
}
這應該產生如下內容:
<CocoKeys>
<CocoKey key="sample">
<CocoValues>
<CocoValue>Sample1</CocoValue>
<CocoValue>Sample2</CocoValue>
<CocoValue>Sample3</CocoValue>
</CocoKey>
</CocoKeys>
另一方面,只需對其進行迭代並進行重構。 我希望代碼是正確的,我只是以您的示例為例。 您可能必須調整方法調用,但以偽方式應正確無誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.