我有一个像这样的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;
}
答案 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;
}