[ Pobierz całość w formacie PDF ]
.do51.Mam nadziejê, ¿e procedura ta Ciê nie przera¿a — przewa¿aj¹ca jej czêœæ poprostu generuje formatuj¹ce znaczniki HTML.Instrukcja if umieszczona w wierszu33.okreœla czy dany wêze³ ma jakiekolwiek wêz³y podrzêdne.Jeœli nie ma, toprocedura wyœwietli jedynie wartoœæ aktualnie przetwarzanego wêz³a.Jeœlijednak bie¿¹cy wêze³ bêdzie mia³ jakieœ wêz³y potomne, to wyœwietlona zostaniejego wartoœæ zapisana w nawiasach k¹towych.Kolejna instrukcja if, zapisana wwierszu 41., okreœla czy przetwarzany wêze³ ma jakiekolwiek atrybuty iwyœwietla odpowiedni komunikat, jeœli jakieœ atrybut zostan¹ odnalezione.I wkoñcu, pêtla while rozpoczynaj¹ca siê w wierszu 42.pobiera po kolei wszystkieatrybuty wêz³a i wyœwietla je.Wyniki wykonania powy¿szego przyk³aduprzedstawi³em na rysunku 12.8.Rysunek 12.8.Wykorzystanie obiektu XPathNavigator do wyœwietlania danych XMLXPathXPath jest specyfikacj¹ jêzyka s³u¿¹cego do pobierania fragmentów plików XML,opracowan¹ przez Konsorcjum World Wide Web (w skrócie: W3C).Jêzyk ten pozwalana zadawanie pytañ s³u¿¹cych do przeszukiwania zawartoœci plików XML, podobniejak zapytania SQL s³u¿¹ do przeszukiwania informacji przechowywanych w bazachdanych.Jêzyk XPath mo¿e byæ dosyæ z³o¿ony, wiêc w tym rozdziale nawet niespróbujê opisywaæ jego sk³adni.Zamiast tego skoncentrujê siê nazademonstrowaniu sposobu wykorzystania zapytañ XPath do przeszukiwaniadokumentów XML.Zapytania XPath s¹ ³añcuchami znaków sk³adaj¹cymi siê ze s³Ã³w kluczowychreprezentuj¹cych fragmenty plików XML.Zapytania te s¹ wykonywane przez metodêSelect klasy XPathNavigator.Zak³adaj¹, ¿e chcielibyœmy korzystaæ z naszegoprzyk³adowego pliku books.xml, wywo³anie tej metody mog³oby przyj¹æ poni¿sz¹,przyk³adow¹ postaæ:objNav.Select("descendant::book/author/last-name")Powy¿sze zapytanie zwróci nazwiska wszystkich autorów wszystkich ksi¹¿ekopisanych w pliku.Drugie przyk³adowe zapytanie XPath zwróci natomiastwy³¹cznie cenê ostatniej ksi¹¿ki:objNav.Select("//book[last()]/price/text()")Na listingu 12.7 zosta³ przedstawiony przyk³ad prostej strony ASP.NET, któraumo¿liwia podanie zapytania XPath, a nastêpnie je wykonuje i wyœwietla uzyskanewyniki.Listing 12.7.Wykorzystanie zapytañ XPath do pobierania danych XMLsub SelectData(obj as object,e as eventargs)Dim objDocument as New XPathDocument _(Server.MapPath("./rozdzial11/books.xml"))Dim objNav as XPathNavigator = objDocument.CreateNavigatorlblMessage.Text = ""trydim objIterator as XPathNodeIterator = _objNav.Select(tbQuery.Text)While objIterator.MoveNext()lblMessage.Text += "<" & _objIterator.Current.Name & "> " & _objIterator.Current.Value & ""end whilecatch ex As ExceptionlblMessage.Text = ex.Messageend tryend subZapytania XPathNa przy³ad://book[last()]/@ISBN/text() lubdescendant::book/author/last-namePodaj zapytanie XPath:AnalizaW powy¿szym przyk³adzie, wszystkie najwa¿niejsze czynnoœci wykonywane s¹ wprocedurze SelectData, obs³uguj¹cej zdarzenia generowane przez elementsteruj¹cy przycisku zdefiniowany w wierszach 38.i 39.Kod zapisany w wierszachod 7.do 10.powinien wygl¹daæ znajomo — odpowiada on za stworzenie obiektówXPathDocument oraz XPathNavigator.Prawdziwa zabawa zaczyna siê natomiast wwierszu 13.gdzie rozpoczyna siê blok try.Aby zwróciæ poszukiwane dane XML,wykorzystywana jest metoda Select, w której wywo³aniu zostaje podane zapytanieXPath wpisane przez u¿ytkownika w polu tekstowym.Metoda ta zwraca obiektXmlPathNodeIterator, który pozwala na ³atwe przetworzenie uzyskanych wyników.Zwrócone wyniki s¹ przetwarzane w pêtli while, która, dziêki wykorzystaniumetody MoveNext, pobiera kolejno ka¿dy ze zwróconych wêz³Ã³w.Dla ka¿dego z nichwyœwietlana jest nazwa i wartoœæ, przy czym informacje te s¹ okreœlane zapomoc¹ w³aœciwoœci Current.Name oraz Current.Value.Przyk³adowe wynikiwykonania powy¿szego przyk³adu, przedstawione zosta³y na rysunku 12.9.Rysunek 12.9
[ Pobierz całość w formacie PDF ]