2012-04-13 13 views
0

可能性の重複:
Deserialize List<ArrayList> objectC#で配列の配列であるXML要素を逆シリアル化できますか?

私は本当にC#のオブジェクトに次のXMLをデシリアライズするために苦労しています。

<docRoot> 
    ... 
    <doc-sets> 
    <docs> 
     <atom:link rel="related" href="http://blah.com/1" title="abc" xmlns:atom="http://www.w3.org/2005/Atom" /> 
     <atom:link rel="related" href="http://blah.com/2" title="abc2" xmlns:atom="http://www.w3.org/2005/Atom" /> 
    </docs> 
    <docs> 
     <atom:link rel="related" href="http://blah.com/1" title="abc" xmlns:atom="http://www.w3.org/2005/Atom" /> 
     <atom:link rel="related" href="http://blah.com/2" title="abc2" xmlns:atom="http://www.w3.org/2005/Atom" /> 
    </docs> 
    .... 
    </doc-sets> 
</docRoot 

私は非常に似ている前の質問(Deserialize List<ArrayList> object)を発見したが、私はあまりにもオリジナルポスターと同じ問題に達しています。

すべてのリンクを組み合わせたリストを持つオブジェクトを作成できますが、2つの "docs"要素があり、両方のリンクを別々に保つことを維持したいと考えています。

これまでのコードです。

[XmlRoot("docRoot")] 
public class DocRoot 
{ 
    [XmlElement("doc-sets")] 
    public List<Docs> DocSets; 
} 
public class Link 
{ 
    [XmlAttribute("href")] 
    public string Href;   
} 
public class Docs 
{ 
    [XmlArray("docs")] 
    [XmlArrayItem("link", typeof(Link), Form = XmlSchemaForm.Qualified, Namespace = "http://www.w3.org/2005/Atom")] 
    public List<Link> Links; 

    public Docs() 
    { 
     Links = new List<Link>(); 
    } 
} 

私は自分自身のリンクを含む2「ドク」の要素ではなく、リンクのいずれかの組み合わせリストを保持する方法任意のアイデア?

おかげで、私はあなたがリンクのリストとドキュメントのリストとドキュメントセットのリストを持って伝えることができるものから、

答えて

1

。その後、クラスの文書セットが欠落している:XMLをデシリアライズするとき

[XmlRoot("docRoot")] 
public class DocRoot 
{ 
    [XmlElement("doc-sets")] 
    public DocSet DocSets; 
} 

public class DocSet 
{ 
    [XmlElement("docs")] 
    public List<Doc> Docs; 
} 

public class Doc 
{ 
    [XmlElement("link", Form = XmlSchemaForm.Qualified, Namespace = "http://www.w3.org/2005/Atom")] 
    public List<Link> Links; 
} 

public class Link 
{ 
    [XmlAttribute("href")] 
    public string Href;   
} 

は今、あなたは、ドキュメントのリストを持っているでしょうし、各ドキュメントオブジェクトは、それが自分のリンクのしています。

編集:
どうやらそれはリンクのリストとドキュメントのリストを1ドキュメントセットの要素です。

+0

お詫び申し上げますが、XMLの命名は混乱します。 "docs"のリストを含む "doc-sets"が1つあります。次に、 "ドキュメント"には "リンク"のリストが含まれています。 –

+0

@Robbie:DocSetsがリストの代わりにDocSetタイプのときにもSaniの答えが当てはまると思います。 jbl

+0

@jblは、リストの代わりにタイプをDocSetに変更するだけです。 :) –

関連する問題