. Чтение XML-файла с использованием файлового диалога в Java
Чтение XML-файла с использованием файлового диалога в Java

Чтение XML-файла с использованием файлового диалога в Java

В этом занятии надлежит познакомиться с работой компонента файлового диалога для выбора XML-базы и загрузки ее в текстовую область для выполнения последующего поиска. Будет использована база данных, содержащая сведения о курсах валют. Поиск котировки валюты осуществляется по ее названию. Диалоговый интерфейс предполагает использование компонента JOptionPane пакета Swing. Более подробно о компонентах пакета Swing и их методах можно прочитать в [11].

Краткие теоретические сведения

Класс файлового диалога называется FiieDiaiog. Этот класс позволяет открыть окно для выбора имени файла, содержимое которого требуется прочитать или записать. Данный класс содержит методы setFiie() для установки отображаемых файлов по их расширению, getFiie() для получения имени выбранного файла и др. При запуске файлового диалога по команде show() откроется окно диалога следующего вида (рис. 2.11).

Рис. 2.11. Окно файлового диалога

В этом окне следует просто выбрать требуемый XML-файл, содержимое которого откроется в текстовой области, как показано на рис. 2.12.

Рис. 2.12. Открытие содержимого XML-файла в текстовой области

По щелчку мыши на кнопке Course появится приглашение ввести название валюты (рис. 2.13).

Рис. 2.13. Приглашение для ввода названия валюты

Для отображения окна на рис. 2.13 используется команда:

String s=JOptionPane.showInputDialog(null, "Input currency title") .toUpperCase ();

Результат работы этого диалога заключается в формировании ответа в строке s, приведенной к верхнему регистру. На основании введенного названия валюты осуществляется поиск соответствующей записи в XML-файле. Теперь по нажатию OK появится и соответствующая котировка.

Для объявления переменной типа файлового диалога используем команду private FileDialog loader.

Переменная ioader создается конструктором так:

loader=new FileDialog(this,"Browse",FileDialog.LOAD); loader.setFile("*.xml"); // Устанавливаем тип отображаемых

Открытие диалогового файла выполняет команда loader, show (). Выбранный файл должен быть прочитан. Для этой цели вводим объявления:

File file=new File(filenamestr);

FileInputStream in=new FileInputStream(file);

DataInputStream dis= new DataInputStream(in);

Чтение файла и отображение его содержимого в текстовой области выполняется методом dispiay() таким образом:

String line=dis.readLine(); // Читаем строку из файла while (line !=null)

//Добавляем прочитанную строку в текстовую область: f ileArea.append(1ine+"\n");

// Проверяем, содержит ли строка тег <name>: if (line.indexOf("name") >=0)

// Если содержит, то переводим символы строки в верхний // регистр:

if (linel.indexOf(s)>=0) // Проверяем, совпало ли имя

// валюты в теге <name>

< priz=l;>//Если совпало, то priz=l

line=dis.readLine(); // Считываем строку с тегом <value> if((priz==l)&&(line.indexOf("value")>=0))

> // Выводим котировку валюты

Объединим (листинг 2.17) эти сведения в единое приложение, добавив необходимые кнопки, назначение которых пояснено в комментариях.

! Листинг 2.17. Работа с диалоговым файлом

import java.awt.*; import java.awt.event.*; import java.io.*; import javax.swing.*; import javax.swing.event.*;

public class FileDialogS extends Frame // Базовый класс

implements ActionListener public static void main(String[] args) new FileDialogS();

public Button loadButton; // Кнопка для открытия файлового

public Button exitButton; // Кнопка для выхода из приложения

public TextArea fileArea; // Текстовая область

// для вывода содержимого файла

public Button tfPoisk; // Кнопка для ввода названия валюты и

// инициализации поиска котировки

private FileDialog loader; // Этот компонент используется для

// выбора файла из диалогового // окна

public String filenamestr; // Здесь помещается имя

super("Using FileDialog"); // Вызов конструктора

// родительского класса loadButton=new Button("DisplayFile"); loadButton.addActionListener(this);

tfPoisk=new Button("Course"); // Подключение прослушивателя exitButton=new Button("Exit"); exitButton.addActionListener(this); tfPoisk.addActionListener(this);

Panel buttonPanel=new Panel(); // Создание панели

// для размещения кнопок

// Добавление кнопки на панель

// Используется компоновщик BorderLayout, располагающий // компоненты // по сторонам света

// Сама панель добавляется на форму: add(buttonPanel,BorderLayout.SOUTH); fileArea=new TextArea();

// Текстовая область добавляется на форму: add(fileArea,BorderLayout.CENTER);

// Создание переменной файлового диалога: loader=new FileDialog(this,"Browse",FileDialog.LOAD);

// Установка расширений просматриваемых файлов: loader.setFile("*.xml");

setSize(350,500); // Задаем размеры формы setVisible(true); // Делаем форму видимой

// Обработка событий от кнопок:

public void actionPerformed(ActionEvent event)

loader.show(); // Отображает диалоговое окно для выбора // имени файла filenamestr=loader.getFile(); // Получаем имя файла по

displayFile(filenamestr); // Отображает содержимое

System.exit(0); //Завершение приложения

if(event.getSource()==tfPoisk) // Поиск котировки валюты

// Вывод котировки в диалоговом окне

Видим, что процедура поиска котировки снова считывает файл и определяет позицию строки с введенным названием валюты.

Источник: Герман О. B., Герман Ю. О., Программирование на Java и C# для студента. — СПб.: БХВ-Петербург, 2005. — 512 c.: ил.

📎📎📎📎📎📎📎📎📎📎