Программа для создания тестов
Некоторое время назад я опубликовал здесь несколько online-тестов, для которых написал специальное web-приложение. Каждый тест базируется на простом xml-файле, который несложно набрать вручную в любом текстовом редакторе. Но не каждый способен «врукопашную» без ошибок набрать xml-документ, поэтому было создано приложение для удобства создания таких файлов:
Приложение написано на JavaFX+Groovy. Я специально решил потратить время на анализ возможностей стыковки этих двух скоростных языков. Оказалось, что организовать их совместную работу очень просто, не даром оба являются «разновидностями» Java. Если кого-то интересуют подробности — отвечу в каментах или отдельном топике. Здесь же остановлюсь на парсинге XML средствами JavaFX, о котором узнал всё в том же Питере во время доклада программиста из Гонконга Чака Мун Ли.
В обычной Java парсинг XML — дело давным давно отлаженное (концепция SAX), но поскольку занимаешься этим не каждый день, приходится каждый раз заглядывать в мануалы чтобы вспомнить синтаксис. В JavaFX всё гораздо проще. Допустим, есть xml-документ следующего вида:
Требуется «размазать» это содержимое по полям графического интерфейса. Для этого создается парсер
Затем создается поток из файла и выполняется
Спасибо Чаку за это разъяснение, без которого я еще не скоро докопался бы до такой эффективной вещи.
Несколько слов о нем
Приложение написано на JavaFX+Groovy. Я специально решил потратить время на анализ возможностей стыковки этих двух скоростных языков. Оказалось, что организовать их совместную работу очень просто, не даром оба являются «разновидностями» Java. Если кого-то интересуют подробности — отвечу в каментах или отдельном топике. Здесь же остановлюсь на парсинге XML средствами JavaFX, о котором узнал всё в том же Питере во время доклада программиста из Гонконга Чака Мун Ли.
В обычной Java парсинг XML — дело давным давно отлаженное (концепция SAX), но поскольку занимаешься этим не каждый день, приходится каждый раз заглядывать в мануалы чтобы вспомнить синтаксис. В JavaFX всё гораздо проще. Допустим, есть xml-документ следующего вида:
<?xml version="1.0" encoding="UTF-8"?>
<test>
<div>
<h1>Основы компьютерной графики</h1>
<p class="first">Выберите правильные варианты ответов:</p>
</div>
<task right="2" timeout="15">
<todo>Единица выводимой информации при
работе дисплея в графическом режиме называется:
</todo>
<variant>баррель</variant>
<variant>байт</variant>
<variant>пиксель</variant>
<variant>дюйм</variant>
</task>
...
Требуется «размазать» это содержимое по полям графического интерфейса. Для этого создается парсер
import javafx.data.pull.PullParser;
...
def parser: PullParser = PullParser{
documentType: PullParser.XML
input: bind inputStream
onEvent: function(e){
if(e.type == PullParser.START_ELEMENT and e.qname.name == "task"){
insert Question{} into questions;
varCnt = 0;
questions[(sizeof questions) - 1].radios[
Integer.parseInt(e.getAttributeValue("right"))].selected = true;
questions[(sizeof questions) - 1].spinner.setValue(
Integer.parseInt(e.getAttributeValue("timeout"))
)
}
if(e.type == PullParser.END_ELEMENT and e.qname.name == "todo"){
questions[(sizeof questions) - 1].textPane.setText(e.text);
}
if(e.type == PullParser.END_ELEMENT and e.qname.name == "variant"){
questions[(sizeof questions) - 1].answers[varCnt].text = e.text;
varCnt++;
}
if(e.type == PullParser.END_ELEMENT and e.qname.name == "p"){
descrPane.setText(e.text);
}
if(e.type == PullParser.END_ELEMENT and e.qname.name == "h1"){
titleToBind = e.text;
}
if(e.type == PullParser.END_DOCUMENT){inputStream.close()}
}
};
Затем создается поток из файла и выполняется
parser.parse()
Спасибо Чаку за это разъяснение, без которого я еще не скоро докопался бы до такой эффективной вещи.
Несколько слов о нем
Чак начал программировать на языке Java в 1996 года, сразу после того как он начал работать в компании Sun Microsystems в Гонконге. В настоящий момент он работает в компании Sun в Сингапуре в качестве ведущего консультанта в области распространения технологий. Приоритетными направлениями для Чака являются: Java API, Java EE, Java SE и Java ME. Чак работает с основными независимыми компаниями, занимающимися разработкой ПО азиатско-тихоокеанского региона, в течение последних шести лет помогая им в разработке, создании прототипов, настройке, оценке и тестировании производительности их Java приложений.
Чак — любитель компьютерных игр, он полагает, что платформа Java полезна для создания игр и делится своим энтузиазмом с другими разработчиками. Чак закончил Королевский Технологический Институт в Мельбурне в 1987 году, где его любимым предметом была теория компиляторов.
Комментарии (0)
RSS свернуть / развернутьТолько зарегистрированные и авторизованные пользователи могут оставлять комментарии.