|
Программирование >> Программирование с использованием ajax
Чтобы увидеть XPath в действии, мы воспользуемся несколько расширенной версией файла books . xml. Он будет приведен в практическом занятии раздела Выборка узлов далее в этой главе, и его также можно найти в загружаемом коде для этой главы под названием XPathQuery.xml. В табл. 25.8 перечислены некоторые из наиболее распространенных операций, которые можно выполнять с XPath. Если не установлено иное, пример запроса XPath выполняет выборку относительно узла, к которому он применен. Когда необходимо иметь имя узла, можете предполагать, что текущим узлом является <Ьоок> из документа XML. Таблица 25.8. Наиболее распространенных операций, которые можно выполнять с XPath Назначение Пример запроса XPath Выбрать текущий узел Выбрать родительский узел по отношению к текущему Выбрать все дочерние узлы текущего узла * Выбрать все дочерние узлы с указанным именем, title в данном случае - title Выбрать атрибут текущего узла @pages Выбрать все атрибуты текущего узла @ * Выбрать дочерний узел по индексу, в данном author [ 2 ] случае - второй узел author Выбрать все текстовые узлы текущего узла text {} Выбрать одного или более внуков текущего узла author/text () Выбрать все узлы в документе с определенным title именем, в данном случае - все узлы title Выбрать все узлы в документе с определенным book/title именем и определенным именем родителя. В данном случае - узлы title с родителем book Выбрать все узлы в документе с определенным име- book [author= Jacob Hammer Pedersen ] нем и определенным именем родителя, в данном случае - книгу с автором Jacob Hammer Pedersen Выбрать узел с определенным значением атрибута book [@pages= 1000 ] pages, в данном случае pages равен 1000 В следующем практическом занятии вы создадите небольшое приложение, которое позволит выполнить и увидеть результаты предопределенных запросов, а также вводить собственные запросы. Выборка узлов Как упоминалось ранее, в этом примере используется новый файл XML по имени XPathQuery .XML, входящий в состав загружаемого кода. Разумеется, код можно ввести и самостоятельно: <?xml version= l.0 ?> <books> <book pages= 944 > <title>Beginning Visual C#</title> <author>Karli Watson</author> <author>Jacob Hammer Pedersen</author> <author>Christian Nagel</author> <author>David Espinosa</author> <author>Zach Greenvoss</author> <author>Jon D. Reid</author> <author>Matthew Reynolds</author> <author>Morgan Skinner</author> <author>Eric White</author> <code>7582</code> </book> <book pages= 1000 > <title>Beginning Visual C# 2008</title> <author>Karli Watson</author> <author>Jacob Hammer Pedersen</author> <author>Christian Nagel</author> <author>Jon D. Reid</author> <author>Morgan Skinner</author> <author>Eric White</author> <code>1234567890</code> </book> <book pages= 1272 > <title>Professional C# 2nd Edition</title> <author>Simon Robinson</author> <author>Scott Allen</author> <author>011ie Cornes</author> <author>Jay Glynn</author> <author>Zach Greenvoss</author> <author>Burton Harvey</author> <author>Christian Nagel</author> <author>Morgan Skinner</author> <author>Karli Watson</author> <code>7043</code> </book> </books> Сохраните этот XML-файл под именем XPathQuery. xml. He забудьте изменить путь к файлу в следующем коде. Выполните следующие шаги для создания приложения Windows Forms с возможностью выполнения запросов. 1. Создайте новое приложение Windows Forms и назовите его XmlQueryExample. 2. Создайте диалоговое окно, показанное на рис. 25.6. Присвойте элементу TextBox имя textBoxQuery. Все прочие элементы управления должны называться именем типа, за которым следует их свойство text (т.е. именем переключателя Set book as current (Установить узел book как текущий) будет radioButtonSetBook AsCurrent, а именем кнопки Close (Закрыть) - buttonClose). 3. Выполните щелчок правой кнопкой мыши на форме и выберите в контекстном меню пункт View Code (Просмотреть код). Включите следующую директиву using: using System.Xml; О SeiectnMl С S*bo<*i*a*Twt С Srfeurhon S lbooktMCui i (< S lwtby )w lcauthor S lwt ctiidnn f- SriKtrfbootu Pwc. 25.6. Диалоговое окно приложения XmlQueryExample 4. Добавьте два приватных поля для хранения документа и текущего узла, и инициализируйте их в конструкторе: private XmlDocument mDocument; private XmlNode mCurrentNode; public Forml0 { InitializeComponent 0; mDocument = new XmlDocument(); mDocument.Load(@ C:\Beginning Visual C#\Chapter 25\XPathQuery.xml ); mCurrentNode = mDocument.DocumentElement; ClearListBox 0; 5. Вам понадобятся еще несколько вспомогательных методов для отображения результата запросов в окне списка: private void DisplayList(XmlNodeList nodeList) { foreach (XmlNode node in nodeList) { RecurseXmlDocumentNoSiblings(node, 0) ; private void RecurseXmlDocumentNoSiblings(XmlNode root, int indent) { Ничего не делать, если root равен null, if (root == null) return; if (root is XmlElement) Корень имеет тип XmlElement { Сначала напечатать имя. listBoxResult.Items.Add(root.Name.PadLeft(root.Name.Length + indent)); Проверить наличие дочерних узлов, и если они есть, вызвать этот же метод для их печати, if (root.HasChildNodes) RecurseXmlDocument(root.FirstChild, indent + 2);
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |