|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
Лабораторная работа 5.1 Примение объектной модели DOMОбъектная модель XML DOM (Document Object Model), библиотека Microsoft XML 4 (MSXML4), Sapien PrimalScript, узлы документа XML Задание:Вам нужно написать программу, которая бы позволяла пользователям производить поиск в файле Phonebook.xml по фамилии сотрудника и возвращала бы для них информацию о его сотовых телефонах (только сотовых, не городских). Окно для приема данных от пользователя должно выглядеть так:
Окно для возврата данных - так:
Примечание 1Создать такую программу проще всего на VBScript или JavaScript с использованием объектов из библиотеки MSXML. Рекомендуется установить с компакт-диска MSXML4 и воспользоваться прилагаемой к нему справкой. Для написания скрипта удобно использовать специализированный программный продукт PrimalScript, который также находится на компакт диске. Однако вы можете использовать любой язык программирования и набор DOM-совместимых программных объектов, который вам наиболее удобен. Примечание 2Для решения поставленной задачи проще всего было бы использовать выражения XPath, но, поскольку в этом курсе они не рассматриваются, можно использовать простой перебор всех элементов через цикл. Решение:Итоговый код скрипта на языке VBScript для вашей задачи может выглядеть так: Dim sInput, sResult, oXmlDoc, oNodeList, oNode, oRecord, oChild 'Получаем от пользователя фамилию sInput = InputBox("Введите фамилию", _ "Получение информации о телефоне") 'Создаем объект документа XML Set oXmlDoc = CreateObject("Msxml2.DOMDocument.4.0") 'Загружаем к него файл с диска. При необходимости путь поменять oXmlDoc.load ("C:\Lab4-1\PhoneBook.xml") 'Получаем список всех узлов типа LastName Set oNodeList = oXmlDoc.getElementsByTagName("pbml:LastName") 'проходим циклом по каждому узлу For Each oNode In oNodeList 'Проверяем на соответствие фамилии. 'На всякий случай приводим к единому регистру If lcase(oNode.Text) = lcase(sInput) Then 'Получаем ссылку на родительский объект - Record Set oRecord = oNode.parentNode 'Проходим циклом по всем детям For Each oChild In oRecord.ChildNodes 'Проверяем тип узла... If oChild.NodeName ="pbml:Phonenumber" Then '... и значение элемента PhoneType If oChild.Attributes.GetNamedItem("pbml:PhoneType").text = "M" Then 'если все правильно, добавляем номер телефона 'к тексту в переменной sResult sResult = sResult & oNode.Text & vbTab & oChild.Text & vbCrLf End If End If Next End IF Next 'проверка - нашли такую запись или нет If sResult = "" Then MsgBox "Запись не обнаружена!",, "Информация о сотовом телефоне" Else 'Непосредственно вывод информации MsgBox sResult,, "Информация о сотовом телефоне" End if
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
Получить учебные материалы по этому курсу |
||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||