2013-04-10 72 views
0

我有一個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,BU目前還沒有成功。我想要做的是檢索所有類型爲「CPA」或任何其他類型的貸方。

有什麼建議嗎?

// * UPDATE * //

下面的更新就是我目前在。它不工作,得到'對象引用不設置爲實例'錯誤箭頭是。

<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

看看這裏http://stackoverflow.com/questions/364253/how-to-deserialize-xml-document – 2013-04-10 14:35:46

+0

可能重複[這裏](http://stackoverflow.com/questions/15154924/如何閱讀xml的類對象/ 15155075#15155075) – Amicable 2013-04-10 14:37:48

+0

對不起,這不是我要找的 – dotnetnoob 2013-04-10 15:05:01

回答

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; 
} 
相關問題