2013-04-10 2 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 * //

Обновление ниже, где я в настоящее время. Его не работает, получая ошибку «ссылка на объект, не установленная на экземпляр» wgere arrow.

<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 –

+0

Возможные дублируют [здесь] (http://stackoverflow.com/questions/15154924/ how-to-read-xml-to-class-object/15155075 # 15155075) – Amicable

+0

Извините, это не то, что я ищу – dotnetnoob

ответ

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; 
} 
Смежные вопросы