Parse XML using LINQ to SQL -
im trying parse following xml using linq-to-sql visual studio doesn't seem want play ball. i've tried using xelement , xdocument , tried selecting root node or api_item node directly, doesn't seem happen me.
can advise bit of linq-to-xml?
i've tried following (and many variations of it!) no avail. (note: e.result contains xml string)
var deals = el in xelement.parse(e.result).elements("api_response").elements("deals").elements("api_item") select new { title = el.element("title").value, description = el.element("description").value };
thanks! (heres snippet of xml coming api)
<?xml version="1.0" ?> - <api_response> - <deals> - <api_item> <title>palit geforce gtx460 768mb: £143.56 @ cclonline</title> <deal_link>http://www.hotukdeals.com/deals/palit-geforce-gtx460-768mb-143-56-a/725851</deal_link> <mobile_deal_link>http://m.hotukdeals.com/deals/palit-geforce-gtx460-768mb-143-56-a/725851</mobile_deal_link> <deal_image>http://www.hotukdeals.com/images/threads/725851_1.jpg</deal_image> <description>palit geforce gtx460 768mb - ne5tx460fhd79 (free delivery or collection) graphics card require: ..pci express or pci express 2.0-compliant motherboard 1 dual-width x16 graphics slot ..two 6-pin pci express supplementary power connectors ..minimum 450w or greater system power supply (with minimum 12v current rating of 24a) ..supported operating systems: windows 7, windows vista, windows xp</description> <submit_time>19 hours, 29 minutes ago</submit_time> <hot_time>8 minutes ago</hot_time> <poster_name>gads</poster_name> <temperature>102.629997253</temperature> <price>143.56</price> <timestamp>1279921047</timestamp> <expired>false</expired> - <forum> <name>deals</name> <url_name>deals</url_name> </forum> - <category> <name>computers</name> <url_name>computers</url_name> </category> - <merchant> <name>cclonline</name> <url_name>cclonline</url_name> </merchant> <tags /> </api_item> - <api_item> <title>empire total war (pc) £10 instore @ hmv!</title> <deal_link>http://www.hotukdeals.com/deals/empire-total-war-pc-10-instore-hmv/725848</deal_link> <mobile_deal_link>http://m.hotukdeals.com/deals/empire-total-war-pc-10-instore-hmv/725848</mobile_deal_link> <deal_image>http://www.hotukdeals.com/images/threads/725848_1.jpg</deal_image> <description>not latest game in series, still cracking game, , fiver cheaper best online price looks of things.</description> <submit_time>19 hours, 34 minutes ago</submit_time> <hot_time>8 minutes ago</hot_time> <poster_name>crazy jamie</poster_name> <temperature>98.4000015259</temperature> <price>10</price> <timestamp>1279920760</timestamp> <expired>false</expired> - <forum> <name>deals</name> <url_name>deals</url_name> </forum> - <category> <name>entertainment</name> <url_name>entertainment</url_name> </category> - <merchant> <name>hmv</name> <url_name>hmv</url_name> </merchant> - <tags> - <api_item> <name>empire total war</name> </api_item> </tags> </api_item> - <api_item> <title>samsung sh-b083l 8x bluray rom + dvd-rw - £46.72 delivered or less @ overclockers</title> <deal_link>http://www.hotukdeals.com/deals/samsung-sh-b083l-8x-bluray-rom-dvd-/725984</deal_link> <mobile_deal_link>http://m.hotukdeals.com/deals/samsung-sh-b083l-8x-bluray-rom-dvd-/725984</mobile_deal_link> <deal_image>http://www.hotukdeals.com/images/threads/725984_1.jpg</deal_image> <description>if free delivery overclockers being long-time forums member £43.46 delivered , same price if buy shop in stoke. samsung's sh-b083l can play blu-ray discs , record cds , dvds. plus, has fast read speeds, go way 8x. in addition 1080p hd picture support , shb083l available huge capacity of 25 gb single-layer disc, , 50 gb dual-layer disc. can breathe new life current movie collection latest upscaling technology gives standard definition dvds dramatically improved high resolution look. write speed - dvd-r: 16x - dvd-r dl: 8x - dvd+r: 16x - dvd+r dl: 8x - dvd+rw: 6x - dvd-ram: 12x - cd-r: 48x - cd-rw: 4x read speed - bd-r: 8x - bd-r dl: 4x - bd-re dl: 4x - dvd-ram: 12x - dvd-rom: 16x - dvd-r: 16x - dvd+r: 16x - dvd+rw: 12x - cd-r: 48x - cd-rw: 40x - cd-rom: 48x</description> <submit_time>6 hours, 38 minutes ago</submit_time> <hot_time>9 minutes ago</hot_time> <poster_name>hajj_3</poster_name> <temperature>96.4800033569</temperature> <price>46.72</price> <timestamp>1279967326</timestamp> <expired>false</expired> - <forum> <name>deals</name> <url_name>deals</url_name> </forum> - <category> <name>computers</name> <url_name>computers</url_name> </category> - <merchant> <name>overclockers</name> <url_name>overclockers</url_name> </merchant> <tags /> </api_item> <?xml version="1.0" ?> - <api_response> - <deals> - <api_item> <title>palit geforce gtx460 768mb: £143.56 @ cclonline</title> <deal_link>http://www.hotukdeals.com/deals/palit-geforce-gtx460-768mb-143-56-a/725851</deal_link> <mobile_deal_link>http://m.hotukdeals.com/deals/palit-geforce-gtx460-768mb-143-56-a/725851</mobile_deal_link> <deal_image>http://www.hotukdeals.com/images/threads/725851_1.jpg</deal_image> <description>palit geforce gtx460 768mb - ne5tx460fhd79 (free delivery or collection) graphics card require: ..pci express or pci express 2.0-compliant motherboard 1 dual-width x16 graphics slot ..two 6-pin pci express supplementary power connectors ..minimum 450w or greater system power supply (with minimum 12v current rating of 24a) ..supported operating systems: windows 7, windows vista, windows xp</description> <submit_time>19 hours, 29 minutes ago</submit_time> <hot_time>8 minutes ago</hot_time> <poster_name>gads</poster_name> <temperature>102.629997253</temperature> <price>143.56</price> <timestamp>1279921047</timestamp> <expired>false</expired> - <forum> <name>deals</name> <url_name>deals</url_name> </forum> - <category> <name>computers</name> <url_name>computers</url_name> </category> - <merchant> <name>cclonline</name> <url_name>cclonline</url_name> </merchant> <tags /> </api_item> - <api_item> <title>empire total war (pc) £10 instore @ hmv!</title> <deal_link>http://www.hotukdeals.com/deals/empire-total-war-pc-10-instore-hmv/725848</deal_link> <mobile_deal_link>http://m.hotukdeals.com/deals/empire-total-war-pc-10-instore-hmv/725848</mobile_deal_link> <deal_image>http://www.hotukdeals.com/images/threads/725848_1.jpg</deal_image> <description>not latest game in series, still cracking game, , fiver cheaper best online price looks of things.</description> <submit_time>19 hours, 34 minutes ago</submit_time> <hot_time>8 minutes ago</hot_time> <poster_name>crazy jamie</poster_name> <temperature>98.4000015259</temperature> <price>10</price> <timestamp>1279920760</timestamp> <expired>false</expired> - <forum> <name>deals</name> <url_name>deals</url_name> </forum> - <category> <name>entertainment</name> <url_name>entertainment</url_name> </category> - <merchant> <name>hmv</name> <url_name>hmv</url_name> </merchant> - <tags> - <api_item> <name>empire total war</name> </api_item> </tags> </api_item> - <api_item> <title>samsung sh-b083l 8x bluray rom + dvd-rw - £46.72 delivered or less @ overclockers</title> <deal_link>http://www.hotukdeals.com/deals/samsung-sh-b083l-8x-bluray-rom-dvd-/725984</deal_link> <mobile_deal_link>http://m.hotukdeals.com/deals/samsung-sh-b083l-8x-bluray-rom-dvd-/725984</mobile_deal_link> <deal_image>http://www.hotukdeals.com/images/threads/725984_1.jpg</deal_image> <description>if free delivery overclockers being long-time forums member £43.46 delivered , same price if buy shop in stoke. samsung's sh-b083l can play blu-ray discs , record cds , dvds. plus, has fast read speeds, go way 8x. in addition 1080p hd picture support , shb083l available huge capacity of 25 gb single-layer disc, , 50 gb dual-layer disc. can breathe new life current movie collection latest upscaling technology gives standard definition dvds dramatically improved high resolution look. write speed - dvd-r: 16x - dvd-r dl: 8x - dvd+r: 16x - dvd+r dl: 8x - dvd+rw: 6x - dvd-ram: 12x - cd-r: 48x - cd-rw: 4x read speed - bd-r: 8x - bd-r dl: 4x - bd-re dl: 4x - dvd-ram: 12x - dvd-rom: 16x - dvd-r: 16x - dvd+r: 16x - dvd+rw: 12x - cd-r: 48x - cd-rw: 40x - cd-rom: 48x</description> <submit_time>6 hours, 38 minutes ago</submit_time> <hot_time>9 minutes ago</hot_time> <poster_name>hajj_3</poster_name> <temperature>96.4800033569</temperature> <price>46.72</price> <timestamp>1279967326</timestamp> <expired>false</expired> - <forum> <name>deals</name> <url_name>deals</url_name> </forum> - <category> <name>computers</name> <url_name>computers</url_name> </category> - <merchant> <name>overclockers</name> <url_name>overclockers</url_name> </merchant> <tags /> </api_item> </deals> <total_results>1000</total_results> </api_response>
figured out:
var deals = el in xelement.parse(e.result).elements("deals").elements("api_item") select new { title = (string)el.element("title").value, description = (string)el.element("description").value };
looks won't work unless cast element value before assigning it. adding casting seemed trick. how bizarre!
Comments
Post a Comment