ФЕДЕРАЛЬНОЕ АГЕНТСТВО СВЯЗИ Федеральное государственное бюджетное образовательное учреждениевысшего образования «ПОВОЛЖСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТТЕЛЕКОММУНИКАЦИЙ И ИНФОРМАТИКИ» Факультет Информационных систем и технологий Кафедра Программной инженерии ОТЧЕТ ПО ЛАБОРАТОРНОЙ РАБОТЕ № 1 по дисциплине Разработка серверной части web-приложений название (при наличии) ВЫПОЛНИЛ (А) студент(ка) ИВТ-13 Фомин А.В. (группа) (ФИО) ПРОВЕРИЛ Асси Самара 2024 Ассистент Кадирова В.А. (должность) (ФИО) Содержание Цель работы и описание задачей…………………………………………3 Ход выполнения работы…………………………………………………..4 Результаты выполнения лабораторной работы………………………….8 Вывод по выполнению лабораторной работы…………………………..9 Список используемых источников……………………………………...10 1. Цель работы и описание задачей 1.1 Цель работы В процессе написания тестовых заданий ознакомиться с элементами языка XML и средствами Java для обработки XML-документов. 1.2 Задание 1 Изучить предлагаемый файл описания типа документа сформировать документ согласно этим правилам. Рис. 1.1 Код файла group.dtd 1.3 Задание 2 Разработать на Java консольное приложение, имеющее два входных параметра: имена входного и выходного файла. Задача приложения заключается в проверке значения средней оценки и его коррекции, если в исходном документе оно не соответствует действительности. 3 2. Ход выполнения работы 2.1 Сформировал исходный файл input.xml на основе файла group.dtd <group> <student firstname="Иван" lastname="Иванов" groupnumber="1"> <subject title="Математика" mark="5"/> <subject title="Физика" mark="4"/> <subject title="История" mark="3"/> <average>12</average> </student> <student firstname="Петр" lastname="Петров" groupnumber="1"> <subject title="Математика" mark="3"/> <subject title="Физика" mark="1"/> <subject title="История" mark="2"/> <average>0.1</average> </student> </group> 2.2 Создание XML Parser для редактирование исходного файла import org.w3c.dom.*; import org.xml.sax.SAXException; import javax.xml.parsers.*; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerException; import javax.xml.transform.TransformerFactory; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; import java.io.*; public class XMLParser { public static void main(String[] args) throws TransformerException, SAXException, IOException, ParserConfigurationException { String inputFilename = "input.xml"; // Имя входного XML-файла 4 String outputFilename = "output.xml"; // Имя выходного XML-файла try { // Создание парсера DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); // Чтение входного XML-файла Document document = builder.parse(new File(inputFilename)); // Получение списка всех элементов student NodeList students = document.getElementsByTagName("student"); // Обработка каждого элемента student for (int i = 0; i < students.getLength(); i++) { Element student = (Element) students.item(i); NodeList subjects = student.getElementsByTagName("subject"); int totalMark = 0; int totalSubjects = subjects.getLength(); // Чтение атрибута mark для каждого предмета и вычисление общей суммы for (int j = 0; j < totalSubjects; j++) { Element subject = (Element) subjects.item(j); int mark = Integer.parseInt(subject.getAttribute("mark")); totalMark += mark; } // Вычисление средней оценки для студента double averageMark = (double) totalMark / totalSubjects; // Получение элемента average NodeList averageNodes = student.getElementsByTagName("average"); 5 // Проверка, есть ли элемент average if (averageNodes.getLength() > 0) { Element average = (Element) averageNodes.item(0); // Проверка значения средней оценки и коррекция, если необходимо if (averageMark > 5.0) { averageMark = 5.0; } else if (averageMark < 1.0) { averageMark = 1.0; } // Запись средней оценки в элемент average average.setTextContent(String.valueOf(averageMark)); } } // Запись изменений в выходной XML -файл TransformerFactory transformerFactory = TransformerFactory.newInstance(); Transformer transformer = transformerFactory.newTransformer(); DOMSource source = new DOMSource(document); StreamResult result = new StreamResult(new File(outputFilename)); transformer.transform(source, result); System.out.println("Обработка XML завершена."); }finally{ //fdfdf } } } 6 3. Результаты выполнения лабораторной работы 3.1 Виды файлов input.xml и output.xml до запуска программы Рис. 3.1 Код файла Input.xml Представление файла Input.xml на Рисунке 3.1 Рис. 3.2 Код файла Output.xml Представление файла Input.xml на Рисунке 3.2 3.2 Сформированный файл output.xml после запуска программы 7 Рис. 3.3 Код сформированного файла Output.xml Представление сформированого файла Otput.xml на Рисунке 3.3 4. Вывод по выполнению лабораторной работы 4.1 Вывод В процессе выполнения лабораторной работы было изучено использование языка XML и средств Java для обработки XMLдокументов. Были выполнены задания по созданию документа в соответствии с заданными правилами и разработке консольного приложения на Java для проверки и коррекции значений средней оценки в XML-документе. Таким образом, данная работа позволила познакомиться с основами работы с XML и обработки данных в формате XML с использованием языка Java. 8 Список используемых источников 1. "Java in Action" - авторы: Mike Cantelon, Marc Harter, TJ Holowaychuk, Nathan Rajlich; издательство: Manning Publications; город: Нью-Йорк; год: 2013; число страниц: 416. 2. "Learning Java: Functional Web Development" - авторы: Alex Banks, Eve Porcello; издательство: O'Reilly Media; город: Себастьянполис; год: 2017; число страниц: 350. 9