i new linq xml, , working following xml:
<invoices> <invoice> <order_id>85</order_id> <time>02:52 pm</time> <date>24-05-2013</date> <order> <item> <main> <id>343</id> <qty>1</qty> </main> <add /> </item> <item> <main> <id>3</id> <qty>1</qty> </main> <add> <extra id="1"> <qty>1</qty> <desc>regular</desc> </extra> </add> </item> </order> </invoice> <invoice> <order_id>88</order_id> <time>03:10 pm</time> <date>24-05-2013</date> <order> <item> <main> <id>345</id> <qty>1</qty> </main> <add /> </item> <item> <main> <id>2</id> <qty>2</qty> </main> <add> <extra id="1"> <qty>1</qty> <desc>regular</desc> </extra> </add> </item> </order> </invoice> </invoices> so far have written following code:
void querydata(xdocument doc) { var data = item in doc.descendants("invoice") select new { orderid = item.element("order_id").value, orderdate = item.element("date").value, ordertime = item.element("time").value }; foreach(var p in data) console.writeline(p.tostring()); //... } i having trouble reading nested tags in "order" tag. element/tag "add" has "extra" no. of tags/elements , not.
i don't have access code xml generated have read pattern.
so far have tried working grouping, not able work 2nd , 3rd level elements.
after reading save these values database.
thanks,
let me know if off something, didn't chance test this, , had assume of elements going duplicated
var data = item in doc.descendants ( "invoice" ) select new { orderid = item.element ( "order_id" ).value , orderdate = item.element ( "date" ).value , ordertime = item.element ( "time" ).value , items = order in item.element ( "order" ).descendants ( "item" ) let main = order.element ( "main" ) let adds = order.elements ( "add" ) select new { main = new { id = main.element ( "id" ).value , qty = main.element ( "qty" ).value } , add = (from add in adds let extras = add.elements ( "extra" ) select new { = ( in extras select new { extraid = extra.attribute("id").value, qty = extra.element ( "qty" ).value , desc = extra.element ( "desc" ).value }).firstordefault ( ) }).firstordefault() } };
Comments
Post a Comment