C# для профессионалов. Том II - [9]

Шрифт
Интервал

, объект на основе класса >TextWriter, или объект на основе >XmlWriter. Именно это было использовано при выполнении примера. Отметим новую запись в конце списка:

Если нужно создать документ с самого начала, можно использовать класс >XmlTextWriter. Можно также использовать >XmlDocument. Какой из них выбрать? Если данные, которые желательно поместить в XML, доступны и готовы для записи, то самым подходящий будет класс >XmlTextWriter. Однако, если необходимо создавать документ XML постепенно, вставляя узлы в различные места, то наиболее приемлемым будет применение >XmlDocument. Вот тот же пример, который только что был рассмотрен, но вместо редактирования текущего документа мы создаем новый документ (>DOMSample4):

>private void button1_Click(object sender, System.EventArgs e) {

> // создать раздел объявлений

> XmlDeclaration newDoc=doc.CreateXmlDeclaration("1.0", null, null);

> doc.AppendChild(newDoc);

> // создать новый корневой элемент

> XmlElement newRoot=doc.CreateElement("newBookstore");

> doc.AppendChild(newRoot);

> // создать новый элемент 'book'

> XmlElement newBook=doc.CreateElement("book");

> // создать и задать атрибуты элемента "book"

> newBook.SetAttribute("genre","Mystery");

> newBook.SetAttribute("publicationdate", "2001");

> newBook.SetAttribute("ISBN", "123456789");

> // создать элемент 'title'

> XmlElement newTitle=doc.CreateElement("title");

> newTitle.InnerText="Case of the Missing Cookie";

> newBook.AppendChild(newTitle);

> // создать элемент author

> XmlElement newAuthor=doc.CreateElement("author");

> newBook.AppendChild(newAuthor);

> // создать элемент name

> XmlElement newName=doc.CreateElement("name");

> newName.InnerText="C. Monster";

> newAuthor.AppendChild(newName);

> // создать элемент price

> XmlElement newPrice=doc.CreateElement("price");

> newPrice.InnerText="9.95";

> newBook.AppendChild(newPrice);

> // добавить элемент 'book' к doc

> doc.DocumentElement.AppendChild(newBook);

> // записать на диск Note новое имя файла booksEdit.xml

> XmlTextWriter tr=new XmlTextWriter("..\\..\\..\\booksEdit.xml", null);

> tr.Formatting=Formatting.Indented; doc.WriteContentTo(tr);

> tr.Close();

> // загрузить заголовок в окно списка

> XmlNodeList nodeLst=doc.GetElementsByTagName("title");

> foreach(XmlNode node in nodeLst) listBox1.Items.Add(node.InnerText);

>}


>private void listBox1_SelectedIndexChanged(object sender, System.EventArgs e) {

> String srch="newBookstore/book[title='"+ listBox1.SelectedItem.ToString() + "']";

> XmlNode foundNode=doc.SelectSingleNode(srch);

> if (foundNode!=null) MessageBox.Show(foundNode.InnerText);

> else MessageBox.Show("Not found");

>}

Заметим, что изменились только две начальные строки. Прежде чем сделать >doc.Load, внесем новые элементы:

>XmlDeclaration newDoc=doc.CreateXmlDeclaration("1.0", null, null);

>doc.AppendChild(newDoc);

>XmlElement newRoot=doc.CreateElement("newBookstore");

>doc.AppendChild(newRoot);

Сначала создается новый объект >XmlDeclaration. Параметрами являются версия (в настоящее время всегда >"1.0"), кодировка (>null подразумевает >UTF-8) и, наконец, флаг >standalone. Он может быть >yes или >no, но если вводится null или пустая строка, как в нашем случае, этот атрибут не будет добавляться при сохранении документа. Параметр кодировки должен задаваться строкой, которая является частью класса >System.Text.Encoding, если не используется >null.

Следующим создаваемым элементом станет >DocumentElement. В данном случае мы называем его >newBookstore, чтобы можно было видеть различие. Остальная часть кода является такой же, как и в предыдущем примере, и работает точно так же. Вот файл >booksEdit.xml, создаваемый этим кодом:

>

>

>  Case of the Missing Cookie

>  

>   C. Monster

>  

9.95

>

Мы не рассмотрели всех особенностей класса >XmlDocument или других классов, способствующих созданию модели DOM в .NET. Однако мы видели мощь и гибкость, которые предлагает реализация DOM в .NET. Класс >XmlDocument обычно используется, когда требуется случайный доступ к документу. Используйте классы на основе >XmlReader, когда желательна модель потокового типа. Помните, что гибкость >XmlDocument на основе >XmlNode обеспечивается более высокими требованиями к памяти, поэтому подумайте тщательно о том, какой метод предпочтительнее в конкретной ситуации.

XPath и XslTransform

Мы рассмотрим >XPath и >XslTransform вместе, хотя они являются отдельными пространствами имен на платформе. >XPath содержится в >System.Xml.XPath, a >XslTransform находится в >System.Xml.Xsl. Причина совместного рассмотрения состоит в том, что >XPath, в частности класс >XPathNavigator, предоставляет ориентированный на производительность способ выполнения >XSLTransform в .NET. Для начала рассмотрим >XPath, а затем его использование в классах >System.Xsl.

XPath

Пространство имен >XPath создается для скорости. Оно позволяет только читать документы XML без возможностей редактирования. >XPath создается для поверхностного выполнения быстрых итераций и выбора в документе XML. Функциональность


Рекомендуем почитать
Изучаем Java EE 7

Java Enterprise Edition (Java EE) остается одной из ведущих технологий и платформ на основе Java. Данная книга представляет собой логичное пошаговое руководство, в котором подробно описаны многие спецификации и эталонные реализации Java EE 7. Работа с ними продемонстрирована на практических примерах. В этом фундаментальном издании также используется новейшая версия инструмента GlassFish, предназначенного для развертывания и администрирования примеров кода. Книга написана ведущим специалистом по обработке запросов на спецификацию Java EE, членом наблюдательного совета организации Java Community Process (JCP)


Виртуальная библиотека Delphi

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


Обработка баз данных на Visual Basic.NET

Это практическое руководство разработчика программного обеспечения на Visual Basic .NET и ADO.NET, предназначенное для создания приложений баз данных на основе WinForms, Web-форм и Web-служб. В книге описываются практические способы решения задач доступа к данным, с которыми сталкиваются разработчики на Visual Basic .NET в своей повседневной деятельности. Книга начинается с основных сведений о создании баз данных, использовании языка структурированных запросов SQL и системы управления базами данных Microsoft SQL Server 2000.


Исчерпывающее руководство по написанию всплывающих подсказок

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


Программное обеспечение встроенных систем. Общие требования к разработке и документированию

Embedded system software. General requirements for development and documentationСтандарт подготовлен в развитие ГОСТ Р ИСО/МЭК 12207-99 «Информационная технология. Процессы жизненного цикла программных средств» с целью учета специфики разработки и документирования программного обеспечения встроенных систем реального времени.


Как пасти котов. Наставление для программистов, руководящих другими программистами

«Как пасти котов» – это книга о лидерстве и руководстве, о том, как первое совмещать со вторым. Это, если хотите, словарь трудных случаев управления IT-проектами. Программист подобен кошке, которая гуляет сама по себе. Так уж исторически сложилось. Именно поэтому так непросто быть руководителем команды разработчиков. Даже если вы еще месяц назад были блестящим и дисциплинированным программистом и вдруг оказались в роли менеджера, вряд ли вы знаете, с чего надо начать, какой выбрать стиль руководства, как нанимать и увольнять сотрудников, проводить совещания, добиваться своевременного выполнения задач.