c# - Linq to XML Query not picking anything -
i have rather complex xml document
<itemsearchresponse xmlns="-------"> <operationrequest> <httpheaders> </httpheaders> <requestid>0s57wgdpnc7t8hnbv76k</requestid> <arguments> </arguments> <requestprocessingtime>0.441776990890503</requestprocessingtime> </operationrequest> <items> <request> <itemsearchrequest> </itemsearchrequest> </request> <totalresults>1020</totalresults> <totalpages>102</totalpages> <item> <asin>b004wl0l9s</asin> <salesrank>1</salesrank> <itemattributes> <manufacturer>georgia pacific consumer products lp (cut-sheet paper)</manufacturer> <title>gp copy & print paper, 8.5 x 11 inches letter size, 92 bright white, 20 lb, ream of 500 sheets (998067r)</title> <itemattributes> </item> <items>
i run query on , returns of list of zero:
xdocument doc = xdocument.load(url); list<item> items = (from c in doc.elements("item") select new item { title = c.element("title").value salerank = c.element("salerank").value asin = c.element("asin").value }).tolist<item>();
i new xlinq according documentation should work.
first of have not valid xml. here example how should looks:
<itemsearchresponse > <operationrequest> <httpheaders> </httpheaders> <requestid>0s57wgdpnc7t8hnbv76k</requestid> <arguments> </arguments> <requestprocessingtime>0.441776990890503</requestprocessingtime> </operationrequest> <items> <request> <itemsearchrequest> </itemsearchrequest> </request> <totalresults>1020</totalresults> <totalpages>102</totalpages> <item> <asin>b004wl0l9s</asin> <salesrank>1</salesrank> <itemattributes> <manufacturer>georgia pacific consumer products lp (cut-sheet paper)</manufacturer> <title>gp copy & print paper, 8.5 x 11 inches letter size, 92 bright white, 20 lb, ream of 500 sheets (998067r)</title> </itemattributes> </item> </items> </itemsearchresponse>
and code works it:
var items = (from c in doc.root.element("items").elements("item") select new item() { title = c.element("itemattributes").element("title").value, salerank = c.element("salesrank").value, asin = c.element("asin").value }).tolist();
or descendants
:
var items = (from c in doc.root.descendants("item") select new { title = c.element("itemattributes").element("title").value, salerank = c.element("salesrank").value, asin = c.element("asin").value }).tolist();
Comments
Post a Comment