|
Программирование >> Программирование с использованием ajax
Console.WriteLine(xmlFileName); Console.Write( Программа завершена, нажмите Enter для продолжения: ); Console.ReadLine(); 8. Откомпилируйте и выполните программу (можно просто нажать <F5> для запуска отладки). После этого вы увидите следующий вывод: Заказы для заказчиков Northwind успешно сохранены в: С:\BegVCSharp\Chapter2 9\Xml\NorthwindCustomerOrders.xml Программа завершена, нажмите Enter для продолжения: Нажмите <Enter> для выхода из программы и очистки экрана консоли. Если использовалась комбинация <CtrkF5> (запуск без отладки), может понадобиться нажать <Enter> два раза. Описание полученных результатов Вы добавили в Program, cs ссылку на пространство имен System. Xml. Linq, чтобы вызывать конструкторы классов LINQ to XML. Как было описано в главе 27, создается соединение с базой данных Northwind и затем с помощью 0/R Designer создается отображение LINQ to SQL для данных Northwind. В главной программе создается экземпляр класса контекста Northwind, чтобы использовать последующее отображение: NorthWindDataContext northWindDataContext = new NorthwindDataContext(); Запрос LINQ to SQL очень похож на тот, что применялся в практическом занятии Дальнейшее углубление в LINQ to SQL в главе 27. Он использует член Customers контекста данных Northwind в качестве источника данных и проходит вниз по таблицам Customers, Orders и Order Details для генерации списка всех заказов заказчика. Однако результаты запроса проектируются в конструкции select запроса на вложенные элементы и атрибуты LINQ to XML: XElement northwindCustomerOrders = new XElement( customers , from с in northWindDataContext.Customers select new XElement( customer , new XAttribute ( ID , с.CustomerlD), new XAttribute( City , c.City), new XAttribute( Company , с.CompanyName), from о in c.Orders select new XElement( order , new XAttribute( orderlD , o.OrderlD), new XAttribute( orderDay , O.OrderDate.Value.Day), new XAttribute( orderMonth , o.OrderDate.Value.Month), new XAttribute( orderYear , O.OrderDate.Value.Year), new XAttribute( orderTotal , o.Order Details.Sum(od = > od.Quantity * od.UnitPrice)) ) конец order ) конец customer ); конец customers Для извлечения всех заказов для заказчика используется второй запрос LINQ to SQL (from о in с.Orders . . .), вложенный внутрь первого (from с in northWindDataContext.Customers...). Поле OrderDate разделяется на компоненты - месяц, дату и год, - чтобы облегчить запросы XML; в следующем примере будет показано, как это используется. И, наконец, сгенерированный XML сохраняется в файл, как и в предыдущем примере: string xmlFileName = 0 C:\BegVCSharp\Chapter29\Xml\NorthwindCustomerOrders.xml ; northwindCustomerOrders.Save(xmlFileName); Console.WriteLine( Заказы для заказчиков Northwind успешно сохранены в: ); Console.WriteLine(xmlFileName); Теперь просмотрим содержимое этого файла в качестве подготовки к написанию запроса по нему. Отображение XML-документа Northwind Customer Orders Откройте Internet Explorer, выберите пункт меню FileiOpen (Файл=>Открыть), а затем введите путь к созданному XML-файлу: C:\BegVCSharp\Chapter2 9\Xml\ NorthwindCustomerOrders.xml. XML будет отображен в Internet Explorer, как показано на рис. 29.3. Этот документ содержит всех заказчиков из базы данных примеров Northwind вместе с их заказами. В следующем разделе будет написана программа LINQ to XML для запроса этих данных. п\с>гСгЛгчлт> Ьет ! Eдp♦cef (xov4lpd by О* РЛШ 16Н Yre* fivort looh tH ml versren*1.0- nco<lng=*iitf-8- > <cu*t<-T,e/ Ю -ALFKr City Beriln Co.ntafiv-AHred* futterttiste > <ofrl.. ofrJiin ЮбЧЗ .ri.-.Da r-iv oideiMorthr-e- w lerYeaf-1997* do Тг мЬг ofd< riD Юбчг* 1.тОау-*3* otorMotAb -10 vderver r-iggy orLri- o<>f Of l-rlD 10835* ofd*rl jylb orc1*fMonih l* ..rdiY.. ( 1998 о Чвг Of> OiJfMD-10952 ,jrj* 0-vl6 ordefMontb- 3* of<3orv,.jr 1998 iorjr <Of*r onkrlD llOir ого-чОа, 9 ofcJwMjnthM rJcrVt ч igSB- ori-iT * </customr. <ciietomc> in ANATR if, Mexico D.f. (:сгч>. пу r-Ana Trujmo F.mpdredados у heladcs I 88 flOOOOO 479 /50000 108b 000000- /> 878 OOOUOO - i iO OOOOOO 851 OOOOOO > 491 20OOO0 /> 90 UOOOOO r. d. lD -юзов- ).rl)d, IS- ordtrMonUb-iN- ord*ryeAr=*1996 СчОвгТ coJcr OMlelD 106?5 . > Da, B rdo-V. th.-S* o derVe* xl997* (X*-fTot j <o#d.< f-deMD 10/59 Ofd-iOav 28 o )*:Morth-ll ordv .w =1997 ofrtorTo <ordo. .riflU 10926Od Day 4OfdorMoofhT or4*-fY r-l998-w.lerT . a. </CUStOIT>Of <ciistonf4v ID ANTON С M.xico D.F.* Crmdny Antonio Moreno Taqueria jrdf>r o >;rlD 10365 ofdf-iOay 27 0id. rMon0>-11 .<JerVHar 1996 or-l.T-<tJ*d M -lrio lOSO/- rd Oav 15 Of.JrMoMh 4orde >ear 1997 .d.rf <0f(1.-r ,.<jr.u -10535 orfl.4t)ay 13 o<d* Vonth = 5- order.ai . 1997- od.-. re <Ofder 0.1. iir -10573 0A D.,-I9 ord<<M.,nih-6- - xlerVear 0 <ler o rt.[D -10677- d*Da<--2J ord. M<t>i -9 rdefVfa. JJO 0000(Ю 514 400000 > 40 J JOOOOO 881.250000 > 2156 5OOOO0- /> 99 / Of d.- 1 ol .1 208 2. OOOOOO / > 997* ,rd rTot4l 956.900000- f> <Ofd€ OfdetD 10682 deOa/ -25 Ofd.rt.1onttl -9 - fdr-Vr.,. r-i997- r..d rTt,tal S/S.SOOOOO/> <Of.J > o VrlD 10856- Ofd.<Da/-*28- o dt Month-r 0<d.>fY.ar=*1998- Ofd-fTotrtU660.000000* /> </cu..tomvr - <с ч1оп№г ID AROUT* Mt / london* Coo4J.< iy Around the Horn* -<OK .ir o d-ID 10355* o<d*tt) ly 15- ord-iMonth-l 1* ord t*Har=1996- ordrrTo* 10383* rdeilay 16 o<deMontfv 12 oil-rYear 1996 ord T 10453- ofd Day -21* ofdwMonth -J- ofdrY. j. 1997* *. >гТог -10558 Od.rOay *4 ordfiM- nih 6 ,}.t\ -< =*1997* oflerT taJ .o. o d r[D ofd i P.JeilD <o.d. oidPflD <ord.if ordr.lD <o d-f od.ffD <olWr ord. rlD cofd*>i o- tWtlO <oб oidtTlD <Ofde fdrrll <of ks 0d.ID - i ler ordrtD <of dr o l rID 480 OOOOOO /> 899 00(Ю00 / > 45 I 0004ЮО > 2142 900000 1O707* OidtifOiv -16 rd-rMo-lth-lO ordoi f dr=*1997 Oidt-rTotal 1704.OOOOOO* /> 1074ГО KfOiy M d M, nth -ir Ofd. Ypa.=1997- rdrr rotdl 285.0O0O0O*/> 10743 o >rt)ay ir -dMonth 11* ordt r>.a< -1997 ord/ To i 336.000000* /> 10768 ..d.-.na 8- ..r.jerMonth 12 ord.-Y. r 1997 oiderTttal 1477.OOOOOO* /> 10793 ofd.Oav-*24* Of 1 .гМопП 12 .rdriYew -1997 ord.irTcti 191.100000* /> 10864 ord.fOav 2* Ofde-Mofiin 2* or LtV- ,- 1998 Ofderlot- 282.0OOO00 > 10920* Ofd-fOdy -3* ofdertAonth З* ord- м ir i998* ofd*-rTotal 390.000000* ;> 10953 Ofd.-rDay 16* ord. Mvfith З* ofdt : > e.ir*1998* ofddrTotal 4675.000000* /> 11016* o-dODay lO* ofd.jrMurnJv4* ofde-Vei =1998- OfdrTotal 491.500000* /> P Compute I Protects Modv Off Puc. 29.3. ФайлС: \BegVCSharp\Chapter29\Xml\NorthwindCustomerOrders.xml в Internet Explorer Как запрашивать документ XML Зачем могут понадобиться запросы LINQ к XML-документу? Если программа получает XML, сгенерированный другой программой, вы можете искать в нем специфические элементы XML или атрибуты, чтобы определить, как его следует обрабатывать. Программу может интересовать только подмножество содержимого XML, или же нужно подсчитать элементы внутри документа, либо может понадобиться искать элементы или атрибуты, удовлетворяющие специфическому условию. Запросы LINQ - мощное решение для задач подобного рода. Чтобы сформулировать запрос к XML-документу, классы LINQ to XML, такие как XDocument и XElement, предоставляют свойства-члены и методы, которые возвращают запрашиваемые LINQ коллекции объектов LINQ to XML, содержащихся внутри документа XML или его фрагмента, представленного классом LINQ to XML. В следующем практическом занятии будут использоваться эти запрашиваемые члены-методы и свойства документа XML, созданного в предыдущем примере. Практическое занятие Запрос К документу XML Для создания примера выполните следующие шаги в Visual С# 2008. 1. Создайте новое консольное приложение по имени BegVCSharp 29 5 QueryXML в каталоге С: \BegVCSharp\Chapter29. 2. Откройте главный файл Program.cs. 3. Добавьте ссылку к пространству имен System.Xml. Linq в начало Program.cs, как показано ниже: using System; using System.Collections.Generic; using System.Linq; using Sys tem. Xml. Linq; using System.Text; 4. Добавьте следующий код в метод Main () в Program, cs: static void Main(string[] args) { string xmlFileName = @ C:\BegVCSharp\Chapter29\Xml\ NorthwindCustomerOrders.xml ; XDocument customers = XDocument.Load(xmlFileName); Console.WriteLine( Элементы в загруженном документе: ); var queryResult = from с in customers.Elements() select c.Name; foreach (var item in queryResult) { Console.WriteLine(item); Console.Write( Для продолжения нажмите Enter: ); Console.ReadLine() ; 5. Откомпилируйте и запустите программу (можно просто нажать <F5> для запуска отладки). После этого вы увидите следующий вывод: Элементы в загруженном документе: customers Для продолжения нажмите Enter:
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |