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

1 ... 259 260 261 [ 262 ] 263 264 265 ... 396


XmlText author = document.CreateTextNode( Karli Watson et al ); XmlText code = document.CreateTextNode( 1234567890 );

XmlComment comment = document. CreateComment ( This book is the book you are reading );

Вставка новых элементов. newBook.AppendChild(comment); newBook.AppendChild(newTitle); newBook.AppendChild(newAuthor); newBook.AppendChild(newCode); newTitle.AppendChild(title); newAuthor.AppendChild(author); newCode.AppendChild(code);

root.InsertAfter(newBook, root.FirstChild);

document.Save(@ C:\Beginning Visual C#\Chapter 25\Books.xml );

3. Добавьте следующий код в конце метода RecurseXmlDocument: else if (root is XmlComment)

Напечатать текст, string text = root.Value;

listBoxXmlNodes.Items.Add(text.PadLeft(text.Length + indent));

Затем проверить, есть ли еще дочерние узлы, и если они есть, снова вызвать метод для их печати, if (root.HasChildNodes) RecurseXmlDocument(root.FirstChild, indent + 2);

И, наконец, проверить наличие соседних узлов, и если они есть, вызвать этот же метод для из распечатки, if (root.NextSibling != null) RecurseXmlDocument(root.NextSibling, indent);

4. Запустите приложение и щелкните на кнопке Create Node (Создать узел). Затем щелкните на кнопке Loop (Цикл). Должно получиться диалоговое окно, показанное на рис. 25.5.

books book ttle

author Kvi Watffon

code

7582 book

Thn a (he book you are reedng ttie

Ведг )д\ЛшСй2008 author K t Wataonetd

axle

12345fi7B90 book


Puc. 25.5. Добавлепи£ нового узла

Есть один важный тип узла, который не был создан в предыдущем примере, а именно - XmlAttribute. Оставим это для упражнения в конце главы.



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

Код в методе buttonCreateNodeClick - это место, где происходит собственно создание узлов. Он создает восемь новых узлов, четыре из которых типа XmlElement, три - типа XmlText и один последний - типа XmlComment.

Все узлы создаются методом, инкапсулирующим экземпляр XmlDocument. Узлы XmlElement создаются методом CreateElement, узлы XmlText создаются методом CreateTextNode, а узел XmlComment - методом CreateComment.

После создания этих методов они еще должны быть вставлены в дерево XML. Это делается методом AppendChiid на элементе, по отношению к которому новый узел должен стать дочерним. Единственное исключение - узел book, который является корневым узлом для всех новых узлов. Этот узел вставляется в дерево с помощью метода InsertAfter корневого объекта. В то время как все узлы, вставленные методом AppendChiid, всегда становятся последними в списке дочерних узлов, InsertAfter позволяет должным образом позиционировать узел.

Удаление узлов

Теперь, когда вы знаете, как создаются новые узлы, все, что остается изучить - это как их удалить. Все классы, унаследованные от XmlNode, включают методы, перечисленные в табл. 25.6, которые позволяют удалять узлы из документа.

Таблица 25.6. Методы удаления узлов

Метод Описание

RemoveAll Удаляет все дочерние узлы того узла, на котором метод вызван. Чуть менее

очевидно то, что он также удаляет все атрибуты узла, поскольку они также считаются дочерними узлами

RemoveChild Удаляет единственный дочерний узел того узла, на котором вызван. Метод

возвращает узел, который был удален из документа, так что его можно при необходимости вставить заново.

Следующее короткое практическое занятие расширяет приложение Windows Forms, которое создавалось на протяжении двух последних примеров, добавляя возможность удаления узлов. Пока оно только ищет последний экземпляр узла book и удаляет его.

практическое занятие Удаление узлов

Следующие шаги позволяют найти и удалить последний экземпляр узла book.

1. Добавьте новую кнопку под двумя существующими и назовите ее buttonDelete Node. Установите ее свойство Text в Delete Node.

2. Выполните двойной щелчок на новой кнопке и введите следующий код:

private void buttonDeleteNode Click(object sender, EventArgs e) {

Загрузить документ XML.

XmlDocument document = new XmlDocument();

document.Load(@ C:\Beginning Visual C#\Chapter 25\Books.xml ) ;

Получить корневой элемент.

XmlElement root = document.DocumentElement;



Найти узел. Корень - дескриптор <books>, поэтому его последний дочерний узел и будет последним узлом <Ьоок>. if (root.HasChildNodes) {

XmlNode book = root.LastChild;

Удалить дочерний узел.

root.RemoveChild(book);

Сохранить документ обратно на диск.

document.Save(@ С:\Beginning Visual C#\Chapter 25\Books.xml );

3. Запустите приложение. Когда вы щелкнете на кнопке Delete Node (Удалить узел), а затем на кнопке Loop (Цикл), последний узел в дереве исчезнет.

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

После начальных шагов по загрузке XML в объект XmlDocument вы проверяете корневой элемент, чтобы увидеть, есть ли какие-то дочерние элементы в загруженном XML. Если они есть, вы используете свойство LastChild класса XmlElement для получения последнего дочернего узла. После этого удаление элемента осуществляется простым вызовом RemoveChild с передачей ему экземпляра элемента, который требуется удалить. В данном случае - это последний дочерний узел корневого элемента.

Выборка узлов

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

Класс XmlNode включает два метода, часто используемых для выбора узлов из документа, не обходя их все. Это SelectSingleNode и SelectNodes (см. табл. 25.7) - оба они применяют для выборки узлов специальный язык запросов, называемый XPath. Ниже вы узнаете о нем.

Таблица 25.7. Методы выбора узлов Метод Описание

SelectSingleNode Выбирает единственный узел. Если вы создаете запрос, выбирающий более одного узла, будет возвращен только первый из них

SelectNodes Возвращает коллекцию узлов в форме класса XmlNodeList

XPath

XPath - это язык запросов для документов XML, подобно тому, как SQL - язык запросов для реляционных баз данных. Он используется двумя методами, описанными в табл. 25.7, для того, чтобы позволить избежать необходимости обхода всего дерева документа XML. О нем, однако, следует поговорить особо, поскольку его синтаксис не имеет ничего общего с SQL или С#.

XPath - довольно обширный язык, и мы опишем здесь лишь малую его часть, достаточную для того, чтобы можно было приступить к извлечению узлов. Если вы хотите узнать больнее, заглянит£ на www, w3. org/TR/xpa th и на страницы справочной системы Visual Studio.



1 ... 259 260 261 [ 262 ] 263 264 265 ... 396

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