Jimmysnn
Jimmysnn

Reputation: 593

read xml with same elements name

I have xml in format below:

   <?xml version="1.0" encoding="UTF-8" standalone="true"?>
-<draw><drawNo>381555</drawNo>
    <drawTime>2013-04-29T19:55:00+03:00</drawTime>
    <result>8</result>
    <result>10</result>
    <result>13</result>
    <result>15</result>
    <result>20</result>
    <result>21</result>
    <result>22</result>
    <result>25</result>
    <result>28</result>
    <result>29</result>
    <result>34</result>
    <result>36</result>
    <result>44</result>
    <result>46</result>
    <result>52</result>
    <result>62</result>
    <result>63</result>
    <result>72</result>
    <result>73</result>
    <result>75</result>
</draw>

I need to split the data... I've tried the code below:

XDocument loadeddata = XDocument.Parse(e.Result);
                var data = from query in loadeddata.Descendants("draw")
                           select new KinnoResults()
                                      {
                                          DrawNo = (String) query.Element("drawNo").Value,
                                          DrawTime = (String) query.Element("drawTime").Value,
                                          result1 = (String)query.Element("result").Value,
                                          result2 = (String)query.Element("result").Value

                                      };
                List<KinnoResults> list = data.ToList();

But result1 and result2 hava the same value 8. Any idea please?

Upvotes: 0

Views: 125

Answers (2)

I4V
I4V

Reputation: 35353

var drawNo = loadeddata.Root.Element("drawNo").Value;
var drawTime = loadeddata.Root.Element("drawTime").Value;
var results = loadeddata.Descendants("result").Select(d => d.Value).ToList();

Upvotes: 1

use Elements, it gets you a collection

   select new KinnoResults()
   {
       DrawNo = (String)query.Elements("drawNo").Value,
       DrawTime = (String)query.Element("drawTime").Value,
       result1 = (String)query.Elements("result").ToList()[0].Value,
       result2 = (String)query.Elements("result").ToList()[1].Value

   };

Upvotes: 1

Related Questions