是否可以从xml获取填充类对象?

时间:2013-04-10 14:31:13

标签: asp.net linq linq-to-xml

我有一个像这样的xml文件:

  <CommissionTypes>
    <Type>CPA</Type>
    <Lender>
      <Seq>001</Seq>
      <PostUrl>http://www.mysite.com</PostUrl>
    </Lender>
  </CommissionTypes>
</Lenders>

获得这样的数据:

var config = XDocument.Load(xml);

我需要将它映射到一个类集合,该类的结构如下:

public class Lender
{
    public string Type { get; set; }
    public int Seq { get; set; }
    public string PostUrl { get; set; }

    public void Lender(string type, int seq, string postUrl)
    {
        Type = type;
        Seq = seq;
        PostUrl = postUrl;
    }
}

我一直在尝试使用linq做一段时间,但还没有成功。我想要做的是检索“CPA”类型或任何其他类型的所有贷方。

有什么建议吗?

// *更新* //

以下更新是我目前所处的位置。它不起作用,得到'对象引用没有设置为实例'错误wgere箭头是。

<CommissionTypes>
  <Type type="CPA">
    <Lender>
      <Seq>001</Seq>
      <PostUrl>http://www.mysite.com</PostUrl>
    </Lender>
  </Type>
</CommissionTypes>

    public static List<Lender> GetLenders(string xml)
    {
        var myXml = XDocument.Load(xml);

        var lenders = new List<Lender>();

        lenders = (from type in myXml.Descendants("Type")
               where type.Attribute("type").Value == "CPA"
        ===>   select new Lender(
                "CPA",
                type.Element("Seq").Value.ConvertTo<int>(),
                type.Element("PostUrl").Value)).ToList();

        return lenders;
    }

1 个答案:

答案 0 :(得分:1)

您的查询不正确,因为Seq不是Lender元素的直接子元素。

public static List<Lender> GetLenders(string xml)
{
    var myXml = XDocument.Load(xml);

    var lenders = new List<Lender>();

    lenders = (from type in myXml.Descendants("Type")
               where type.Attribute("type").Value == "CPA"
               from lender in type.Elements("Lender")
               select new Lender(
                    "CPA",
                    (int)lender.Element("Seq"),
                    (string)lender.Element("PostUrl"))).ToList();

    return lenders;
}