Программирование >>  Программирование с использованием ajax 

1 ... 307 308 309 [ 310 ] 311 312 313 ... 396


static void Main(string [ ] args) {

XElement xcust =

new XElement( customers , new XElement( customer , new XAttribute( ID , A ), new XAttribute( City , New York ), new XAttribute( Region , North America new XElement( order ,

new XAttribute ( Item , Widget), new XAttribute( Price , 100)

new XElement( order ,

new XAttribute( Item , Tire ), new XAttribute( Price , 200)

new XElement( customer ,

new XAttribute( ID , B ), new XAttribute( City , Mumbai ), new XAttribute( Region , Asia ), new XElement( order ,

new XAttribute( Item , Oven ), new XAttribute ( Price , 501)

5. После добавления кода конструктора элемента XML на предыдущем шаге добавьте следующий код для сохранения, загрузки и отображения элемента XML:

string xmlFileName = @ с:\BegVCSharp\Chapter29\Xml\example3.xml ; xcust.Save(xmlFileName);

XElement xcust2 = XElement.Load(xmlFileName); Console.WriteLine( Содержимое xcust: ); Console.WriteLine(xcust);

Console.Write( Программа завершена, нажмите Enter для продолжения: ); Console.ReadLine();

6. Откомпилируйте и выполните программу (можно просто нажать <F5> для запуска отладки). После этого вы должны увидеть следующий вывод к окне консоли:

Contents of XElement xcust2: <customers>

<customer ID= A City= New York Region= NOrth America >

<order Item= Widget Price= 100 />

<order Item= Tire Price= 200 /> </customer>

<customer ID= B City= Mumbai Region= Asia >

<order Item= Oven Price= 501 /> </customer> </customers>

Программа завершена, нажмите Enter для продолжения:

Нажмите <Enter> для выхода из программы и очистки экрана консоли. Если использовалась комбинация <Ctrl+F5> (запуск без отладки), может понадобиться нажать <Enter> два раза.



Описание полученных результатов

и XElement, и XDocument наследуются от класса LINQ to XML по имени XMLContainer, который реализует узел XML, содержащий другие узлы XML. Оба класса также реализуют Load О и Save (), так что большинство операций, которые могут быть выполнены в LINQ to XML над XDocument, также могут быть выполнены на экземпляре XElement и его дочерних объектах.

Вы просто создаете экземпляр XElement, который имеет ту же структуру, что и XDocument, использованный в предыдущем примере, но пропускает включающий XDocument. Все операции этой конкретной программы работают с фрагментом XElement аналогично.

XElement также поддерживает методы Load () и Parse () для загрузки XML из файлов и строк, соответственно.

Генерация XML из LINQ to SQL

Часто XML применяется для передачи данных между клиентской и серверной машинами, либо между слоями многоуровневого приложения. Довольно часто приходится запрашивать одни и те же данные из базы данных, а затем производить документ XML или его фрагмент из этих данных для передачи его на другой уровень.

В следующем практическом занятии вы создадите запрос для нахождения некоторых данных в базе Northwind, воспользуетесь LINQ to SQL для запроса этих данных, а затем примените LINQ to XML для преобразования их в XML.

Пример требует наличия базы данных примеров Northwind, описанной в начале главы 27.

Генерация ХМ L из LINQ to SQL

Для создания примера выполните следующие шаги в Visual С# 2008.

1. Создайте новое консольное приложение по имени BegVCSharp 29 4 XMLFrom LINQtoSQL в каталоге С: \BegVCSharp\Chapter29.

2. Как описано в шагах 3-12 практического занятия Первый запрос LINQ to SQL в начале главы 27, добавьте к проекту класс LINQ to SQL по имени Northwind. dbml, а затем добавьте соединение с базой данных Northwind.

3. Перетащите таблицы Customers, Orders и Order Details на поверхность проектирования 0/R Designer Northwind.dbml. Внешний вид O/R Designer показан на рис. 29.2, где присутствуют три таблицы с их отношениями.

4. Откомпилируйте программу, чтобы классы и свойства, определенные в Northwind.dbml, были доступны через средство IntelliSense при редактировании кода в последующих шагах.

5. Откройте главный файл Program.cs.

6. Добавьте ссылку на пространство имен System.Xml.Linq в начало Program.cs, как показано ниже:

using System;

using System.Collections.Generic; using System.Linq; using Sys tem. Xml. Linq;

using System.Text;



, GPH,\NOMCf

. JOB

I t.-npl yt T,aWwn

Prop ti

.t CortKtTrt T Cr,

CdHD

-С Sh.f...

If OiwIlPoc*

Pwc. 29.2. Таблицы Customers, Orders и Order Details и отноилениямежду ними

7. Добавьте следующий код в метод Main () в Program, cs:

static void Main(string [ ] args) {

NorthwindDataContext northwindDataContext = new NorthwindDataContext (); 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 ,

о.OrderDate.Value.Day), new XAttribute( orderMonth ,

O.OrderDate.Value.Month), new XAttribute( orderYear ,

о.OrderDate.Value.Year), new XAttribute( orderTotal ,

o.Order Details.Sum(od = > od.Quantity * od.UnitPrice)) ) конец order ) конец customer ) ; конец customers

string xmlFileName =

@ C:\BegVCSharp\Chapter2 9\Xml\NorthwindCustomerOrders.xml ; northwindCustomerOrders.Save(xmlFileName);



1 ... 307 308 309 [ 310 ] 311 312 313 ... 396

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика