tags:

views:

126

answers:

2

I want to take the solr response xml, and load a custom collection.

I'd like this to be done the XDocument way, as I need to learn linq to xml.

So the XML looks like:

<response>

<lst>
</list>

<result ... >

<doc>

     <arr name="cat">
     </arr>

     <str name="t1">text</str>
     <str name="t2">text2</str>
     <str name="t3">text3</str>
     <float name="amount">35.99</float>


</doc>
<doc>
..
</doc>

</result>

</respones>

My collection:

List<Result> results = new List<Result>();


public class Result
{
   string T1
   string T2
   string T3
   decimal Amount

}
A: 

I would take a look at "XML Serialization in the .NET Framework", as it should guide you on how to map the XML from Solr back to the object representation you want.

casperOne
+3  A: 
XDocument doc = XDocument.Load(yourXmlfilePath);

List<Result> results = doc.Root.Descendants("doc")
    .Select(e=>new Result
     {
           T1= e.Elements("str").First(s=>s.Attribute("name").Value.Equals("T1")).Value,
           T2= e.Elements("str").First(s=>s.Attribute("name").Value.Equals("T2")).Value,
           T3= e.Elements("str").First(s=>s.Attribute("name").Value.Equals("T3")).Value,
           Amount= decimal.Parse(e.Element("float").First(s=>s.Attribute("name").Value.Equals("amount")).Value)
      }).ToList();
Gregoire
very nice, thanks!
Blankman