|
Программирование >> Программирование с использованием ajax
5. После добавления кода конструктора на предыдущем шаге добавьте следующий код для сохранения, загрузки и отображения документа XML в конец метода MainO в Program.cs: string xmlFileName = @ с:\BegVCSharp\Chapter29\Xml\example2.xml ; xdoc.Save(xmlFileName); XDocument xdoc2 = XDocument.Load(xmlFileName); Console.WriteLine( Содержимое xdoc2: ); Console.WriteLine(xdoc2); Console.Write( Программа завершена, нажмите Enter для продолжения: ); Console.ReadLine(); 6. Откомпилируйте и выполните программе (можно просто нажать <F5> для запуска отладки). После этого в окне консоли должен появиться следующий вывод: Содержимое xdoc2: <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> два раза. Описание полученных результатов Как и ранее, первый шаг - ссылка на пространство имен System.Xml. Linq. Затем идут вложенные вызовы конструкторов LINQ to XML - XDocument (), XElement () и XAttribute 0 . Объяснение этих частей кода, которые повторяются здесь, ищите в описании первого примера. После создания объекта XDocument вы специфицируете имя файла в виде строки и сохраняете документ XML в файл вызовом метода Save (): string xmlFileName = @ с:\BegVCSharp\Chapter29\Xml\example2.xml ; xdoc.Save(xmlFileName); Хотя в данном конкретном случае вы сохраняете в файл с определенным именем файла, метод Save () также имеет перегрузки для сохранения в System. 10. TextWriter или System.Xml .XmlWriter, что может подойти, если придется разрабатывать другую программу, в которой применяется один из этих классов для записи в файл. Метод Save () также имеет перегрузку, с помощью которой можно специфицировать SaveOptions для отключения форматирования (по умолчанию XML-документ сохраняется с отступами и пробелами для улучшения читабельности). После сохранения документа в файл он загружается в новый экземпляр XDocument по имени xdoc2: XDocument xdoc2 = XDocument.Load(xmlFileName); Метод XDocument. Load О - статический, поскольку это метод типа фабрики, который создает новый экземпляр XDocument (); его можно использовать для загрузки документа, созданного совершенно другой программой. Затем документ отображается точно так же, как ранее, но на этот раз с использованием экземпляра xdoc2, загруженного из файла. Остальная часть программы остается такой же, как и в предыдущем примере: Console.WriteLine( Содержимое xdoc2: ); Console.WriteLine(xdoc2); Console.Write( Программа завершена, нажмите Enter для продолжения: ); Console.ReadLine(); Загрузка XML из строки Иногда вместо загрузки XML из файла он присылается другой программой в виде строки - через один или более методов. В LINQ to XML создавать XML-документы можно из строк, используя для этого метод Parse О : XDocument xdoc = XDocument.Parse (@ <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> Это произведет тот же результат, что и загрузка документа из файла. Как и Load (), Parse О - метод уровня класса,-создающий новый экземпляр XDocument; конструировать новый объект XDocument перед вызовом метода Parse () не нужно. Хотя строковый литерал XML из предыдущего примера имеет удвоенные кавычки ( ), в действительном содержимом строки они не удваиваются. Удвоенные кавычки - просто соглашение, позволяющее включать кавычки в строковый литерал, помеченный символом @ в начале. Содержимое сохраненного документа XML Воспользуйтесь Internet Explorer для открытия только что сохраненного в предыдущем примере документа. Укажите в адресной строке полное путевое имя - С: \BegVCSharp\ Chapter29\Xml\example2 .xml. Вы увидите документ, как показано на рис. 29.1. <>xml versran= l.O encoding =utf-8 7 <custonners> <customer ID=A City = New York Region=North America <ord€r ltem=Wklget Pnce= 100 /> <order 11ет= ППге Pnce= 200 /> </customer:> <customer ID=B City=Mumbar Яедюп=А51а > <order Item=Oven* Ргк:е=501* </customer> </customer5> Puc. 29.1. Просмотр С: \BegVCSharp\Chapter29\Xml\example2 .xml в Internet Explorer 950 Часть IV. Д оступ к данным Обратите внимание, что объявление XML-документа <?xml version= 1. О encoding= utf-8 ?> появляется в начале сохраненного документа, даже несмотря на то, что оно не отображается, когда объект XDocument выводится на экран методом Console. Writeline (). Беспокоиться об объявлении и многих других деталях XML незачем - можно положиться на поведение по умолчанию, предлагаемое LINQ to XML. Кодировка по умолчанию XML-документов в Windows - UTF-8 (8-битный формат Unicode Transformation Format). Вам не придется изменять это за исключением очень редких ситуаций, таких как создание кодированного в ASCII документа XML, который может понадобиться для унаследованной программы, не воспринимающей UTF-8. В таком случае можно либо добавить объект XDeclaration () с кодировкой, установленной в ASCII, в начало списка параметров для конструктора XDocument (), либо установить свойство Declaration объекта XDocument: xdoc.Declaration = new XDeclaration ( 1.О , us-ascii , yes ); Работа с фрагментами XML В отличие от некоторых API-интерфейсов для XML, LINQ to XML может работать с фрагментами XML (частичными или неполными документами XML) почти таким же образом, как и с полными документами XML. При работе с фрагментом, вы просто имеете дело с XElement в качестве объекта верхнего уровня вместо XDocument. Единственное ограничение к сказанному состоит в том, что вы не может£ добавлять никаки£ другие более эзотерические типы узлов, применимые только к XDocument, вроде XComment для комментариев XML, XDeclaration для объявления документов XML и XProcessinglnstruction для инструкций обработки XML. В следующем практическом занятии вы загрузите, сохраните и будете манипулировать элементом XML и его дочерними узлами, как уже это делалось с документом XML. Практическое занятие работа С фрагментами XML Для создания примера выполните следующие шаги в Visual С# 2008. 1. Либо модифицируйте предыдущий пример, либо создайте новое консольное приложение по имени BegVCSharp 29 3 XMLFragments в каталоге С: \BegVCSHarp\ Chapter29. 2. Откройте главный файл Program.cs. 3. Добавьте ссылку к пространству имен System.Xml.Linq в начало Program.cs, как показано ниже: using System; using System.Collections.Generic; using System.Linq; using Sys tem. Xinl. Linq; using System.Text; Если вы модифицируете предыдущий пример, эта строка уже есть. 4. Добавьте элемент XML без включающего конструктора документа XML, использованного в предыдущем примере, к методу Main () в Program, cs:
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0.001
При копировании материалов приветствуются ссылки. |