C# для профессионалов. Том II - [10]
>XPathNavigator
. Этот класс может использоваться вместо >XmlDocument
, >XmlDataDocument
и >XPathDocument
. Если требуются средства редактирования, то следует выбрать >XmlDocument
; при работе с ADO.NET будет использоваться класс >XmlDataDocument
(мы увидим его позже в этой главе). Если имеет значение скорость, то применяйте в качестве хранилища >XPathDocument
. Можно расширить >XPathNavigator
для таких вещей, как файловая система или реестр в качестве хранилища. В следующей таблице перечислены классы >XPath
с кратким описанием назначения каждого класса:Имя класса | Описание |
---|---|
>XPathDocument | Представление всего документа XML. Только для чтения. |
>XPathNavigator | Предоставляет навигационные возможности для >XPathDocument . |
>XPathNodeIterator | Обеспечивает итерацию по множеству узлов. Является эквивалентом для множества узлов в >Xpath . |
>XPathExpression | Компилированное выражение >Xpath . Используется >SelectNodes , >SelectSingleNodes , >Evaluate и >Matches . |
>XPathException | Класс исключений >XPath . |
>XPathDocument
не предлагает никакой функциональности класса >XmlDocument
. Он имеет четыре перегружаемые версии, позволяющие открывать документ XML из файла или строки пути доступа, объекта >TextReader
, объекта >XmlReader
или объекта на основе >Stream
.
Загрузим документ >books.xml
и поработаем с ним, чтобы можно было понять, как действует навигация. Чтобы использовать эти примеры, необходимо добавить ссылки на пространства имен >System.Xml.Xsl
и >System.Xml.XPath
следующим образом:
>using System.Xml.XPath;
>using System.Xml.Xsl;
Для данного примера воспользуемся файлом >bookspath.xml
. Он аналогичен >books.xml
, за исключением того, что добавлены дополнительные книги. Вот код формы, который находится в папке >XPathXSLSample1
:
>private void button1_Click(object sender, System.EventArgs e) {
> // изменить в соответствии с используемой структурой путей доступа
> XPathDocument doc=new XPathDocument("..\\..\\..\\booksxpath.xml");
> // создать XPathNavigator
> XPathNavigator nav=((IXPathNavigable)doc).CreateNavigator();
> // создать XPathNodeIterator узлов книг
> // который имеют значение атрибута genre, совпадающее с novel
> XPathNodeIterator iter=nav.Select("/bookstore/book[@genre='novel']");
> while(iter.MoveNext()) {
> LoadBook(iter.Current);
> }
>}
>private void LoadBook(XPathNavigator lstNav) {
> // Нам передали XPathNavigator определенного узла book,
> // мы выберем всех прямых потомков и
> // загрузим окно списка с именами и значениями
> XPathNodeIterator iterBook=lstNav.SelectDescendants(XPathNodeType.Element, false);
> while(iterBook.MoveNext())
>listBox1.Items.Add(iterBook.Current.Name + ": " + iterBook.Current.Value);
>}
Здесь сначала создается >XPathDocument
, передавая строку файла и пути доступа документа, который будет открыт. В следующей строке кода создается >XPathNavigator
:
>XPathNavigator nav=((IXPathNavigable)doc).CreateNavigator();
Отметим, что здесь происходит преобразование типа интерфейса >IXPathNavigable
в только что созданный >XPathNavigator
, что вызывает метод >CreateNavigator
. После создания объекта >XPathNavigator
можно начать навигацию в документе.
Этот пример показывает, как применяются методы >Select
для получения множества узлов, которые имеют >novel
в качестве значения атрибута >genre
. Затем мы используем цикл >MoveNext()
для итераций по всем >novels
в списке книг.
Для загрузки данных в >listbox
используется свойство >XPathNodeIterator.Current
. При этом создается новый объект >XPathNavigator
на основе узла, на который указывает >XPathNodeIterator
. В данном случае создается >XPathNavigator
для одного узла >book
(книги) в документе. >LoadBook
создает другой >XPathNodeIterator
, вызывая иной тип метода выбора — метод >SelectDescendants
. Это даст нам >XPathNodeIterator
всех узлов-потомков и потомков узлов-потомков узла >book
(книга), переданного в метод >LoadBook
. Мы делаем другой цикл >MoveNext()
на этом >XPathNodeIterator
и загружаем окно списка именами и значениями элементов.
>XPathNavigator
содержит все методы для перемещения и выбора элементов, которые могут понадобиться. Приведем некоторые из методов перемещения:
Имя метода | Описание |
---|---|
MoveTo | Получает в качестве параметра >XPathNavigator . Делает текущей позицию, которая указана в >XPathNavigator . |
>MoveToAttribute | Перемещает к именованному атрибуту. Получает имя атрибута и пространство имен как параметры. |
>MoveToFirstAttribute | Перемещает к первому атрибуту текущего элемента. Возвращает >true , если выполняется успешно. |
>MoveToNextAttribute | Перемещает к следующему атрибуту текущего элемента. Возвращает >true , если выполняется успешно. |
>MoveToFirst | Перемещает к первому >sibling текущего узла. Возвращает >true , если выполняется успешно, в противном случае возвращает >false . |
>MoveToLast | Перемещает к последнему >sibling текущего узла. Возвращает >true , если выполняется успешно. |
>MoveToNext | Перемещает к следующему >sibling текущего узла. Возвращает >true , если выполняется успешно. |
>MoveToPrevious | Перемещает к предыдущему >sibling текущего узла. Возвращает >true , если выполняется успешно. |
>MoveToFirstChild | Перемещает к первому потомку текущего элемента. Возвращает >true , если выполняется успешно. |
>MoveToId | Перемещает к элементу с идентификатором ID, предоставленным в виде параметра. Должна существовать схема документа и данные элемента типа ID. |
Java Enterprise Edition (Java EE) остается одной из ведущих технологий и платформ на основе Java. Данная книга представляет собой логичное пошаговое руководство, в котором подробно описаны многие спецификации и эталонные реализации Java EE 7. Работа с ними продемонстрирована на практических примерах. В этом фундаментальном издании также используется новейшая версия инструмента GlassFish, предназначенного для развертывания и администрирования примеров кода. Книга написана ведущим специалистом по обработке запросов на спецификацию Java EE, членом наблюдательного совета организации Java Community Process (JCP)
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
Это практическое руководство разработчика программного обеспечения на 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-проектами. Программист подобен кошке, которая гуляет сама по себе. Так уж исторически сложилось. Именно поэтому так непросто быть руководителем команды разработчиков. Даже если вы еще месяц назад были блестящим и дисциплинированным программистом и вдруг оказались в роли менеджера, вряд ли вы знаете, с чего надо начать, какой выбрать стиль руководства, как нанимать и увольнять сотрудников, проводить совещания, добиваться своевременного выполнения задач.