2010-06-11 4 views

답변

1
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(); 
} 

이 이런 식으로 뭔가를 생산해야 다음

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? 
    } 
} 

그러나 나는 사전을 추가 할 수있는 방법으로 난처한 상황에 빠진 오전 (XML 내 XML 파일에 seriliazed)했다 :

<CocoKeys> 
    <CocoKey key="sample"> 
    <CocoValues> 
    <CocoValue>Sample1</CocoValue> 
    <CocoValue>Sample2</CocoValue> 
    <CocoValue>Sample3</CocoValue> 
    </CocoKey> 
</CocoKeys> 

반대쪽에는 반복하여 재구성하십시오. 코드가 맞기를 바란다. 나는 당신의 예제에 의해서만 그것을했다. 메서드 호출을 조정해야 할 수도 있지만 의사 (pseudo)에서는 정확해야합니다.

+0

아, 나는 두려웠다. 반복을 통해 더 좋은 방법이 있어야한다고 생각했다. 그렇지 않다. 고마워! – Matt

+0

np, 즉석에서 글쓰기 연습. – Femaref

관련 문제