0

重複の可能性:
List<ArrayList> オブジェクトをデシリアライズする

次の XML を C# オブジェクトに逆シリアル化するのに本当に苦労しています。

<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 つの「Doc」要素を保持する方法はありますか?

ありがとう

4

1 に答える 1

1

私が言えることから、リンクのリストを含むドキュメントのリストを含むドキュメントセットのリストがあります。次に、クラス DocSet がありません。

[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;        
}

XML を逆シリアル化すると、ドキュメントのリストが表示され、各ドキュメント オブジェクトには独自のリンクが含まれます。

編集:
どうやら、リンクのリストを持つドキュメントのリストを持つ 1 つの doc-sets 要素です。

于 2012-04-13T10:46:37.323 に答える