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

1 ... 305 306 307 [ 308 ] 309 310 311 ... 396


Список параметров XDocument () в приведенном фрагменте кода опущен, так что вы можете видеть начало и конец вызова XDocument (). Подобно всем конструкторам LINQto XML, XDocument () принимает массив объектов (Object [ ]) как один из его параметров, так что ряд других объектов, созданных другими конструкторами, может быть передан ему. Все прочие конструкторы, которые вызываются в этой программе, являются параметрами одного вызова конструктора XDocument (). Первый (и единственный) параметр, который передается в программе - это конструктор XElement ().

XElement (). В документе XML должен присутствовать корневой элемент, так что в большинстве случаев список параметров XDocument () начинается с объекта XElement. Конструктор XElement () принимает имя элемента в виде строки, за которым следует список объектов XML, содержащихся внутри элемента. Здесь корневым элементом является customers , который, в свою очередь, содержит список элементов customer :

new XElement( customers , new XElement( customer .

□ Элемент customer не содержит в себе никаких других элементов. Вместо этого он содержит три атрибута XML, которые создаются конструктором

XAttributeО .

□ XAttribute (). Здесь к элементу customer добавляются три атрибута XML, именуемые ID , City и Region :

new XAttribute( ID , A ),

new XAttribute( City , New York ),

new XAttribute( Region , North America ),

□ Поскольку атрибут XML no определению является листовым узлом XML, не содержащим в себе никаких других узлов XML, конструктор XAttribute () принимает только имя атрибута и его значение в качестве параметров. В данном случае три сгенерированных атрибута - это ID= A , City= New York и Region= North America .

□ Другие конструкторы LINQ to XML. Хотя они не вызываются в рассматриваемой программе, существуют и другие конструкторы LINQ to XML для всех типов узлов XML, такие как XDeclaration () - для объявления XML в начале XML-документа, XComment () - для комментария XML и т.д. Другие конструкторы не используются часто, но доступны, если вы нуждаетесь в них для тонкого контроля форматирования документа XML.

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

В завершение объяснений первого примера: к элементу customer добавляются два дочерних элемента order , сопровождаемые атрибутами ID , City и Region :

new XElement( order ,

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

new XElement( order ,

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



Элементы order имеют атрибуты Item и Price , но не имеют других дочерних элементов.

Затем содержимое полученного документа выводится на консоль:

Console.WriteLine(xdoc);

Этот оператор выводит текст XML-документа, используя метод ToStringO по умолчанию объекта XDocument.

И, наконец, вывод на экран приостанавливается, чтобы можно было увидеть консольный вывод, ожидая нажатия пользователем клавиши <Enter>:

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

После этого программа выходит из метода Main () и завершается.

Конструирование текста элемента XML со строками

Приведенный выше пример форматирует XML без какого-либо текста в элементах. Но часто код XML нуждается также в некотором текстовом содержимом, и это очень легко реализовать с помощью конструктора LINQ to XML объекта XElement (). Например, чтобы сделать идентификатор текстом элемента <customer> вместо его атрибута, просто передайте строку в параметрах конструктора XElement () вместо вложенного XAttribute:

XDocument xdoc = new XDocument( new XElement( customers , new XElement( customer , AAAAAA ,

new XAttribute( City , New York ),

new XAttribute( Region , North America )

new XElement( customer , BBBBBB ,

new XAttribute( City , Mumbai ), new XAttribute( Region , Asia )

Это создаст документ XML следующего вида:

<customers>

<customer City= New York Region= North America >AAAAAA</customer> <customer City= Mumbai Region= Asia >BBBBBB</customer> </customers>

Конструктор XElement () соединяет все строки в списке параметров в один текстовый раздел элемента.

Сохранение и загрузка документа XML

Вы, возможно, заметили, что при отображении документа XML на экране консоли методом Console.WriteLine () он не отображает нормального объявления XML, начинающегося с <?xml version= l .0 . Хотя такое объявление можно создать явно с помощью конструктора XDeclaration (), обычно незачем это делать, поскольку оно создается автоматически при сохранении XML-документа в файл методом Save () из LINQ to XML.



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

В следующем практическом занятии вы испытаете эти операции в действии.

Практическое занят Сохранение и загрузка документа XML

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

L Либо модифицируйте предыдущий пример, либо создайте новое консольное приложение по имени BegVCSharp 2 9 2 SaveLoadXML в каталоге С:\ BegVCSharp\Chapter2 9.

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

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

using System;

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

using System.Text;

Если вы модифицируете предыдущий пример, эта строка уже есть.

4. Если это еще не сделано, добавьте конструктор документа XML с вложенным элементом XML и вызовами атрибутов из предыдущего примера в метод Main () в Program.cs:

static void Main(string[] args) {

XDocument xdoc = new XDocument( 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)



1 ... 305 306 307 [ 308 ] 309 310 311 ... 396

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