- Stack: JDK 17, Spring Shell, JAXB, StAX, XPath, XSLT, XSD, XSL-FO, Apache FOP, Apache POI, iText
Функционал: XML файл с пользователями и едой (из приложения курса TopJava) валидируем и обрабатываем с преобразованием в другой формат
Commands:
xsd: Validate XML files against XSD (XML Schema)
jaxb: Process XML file via JAXB
stax: Process XML file via StAX
xpath: Evaluate XPath against XML
xslt: Transform XML with XSLT
pdf-fop: Convert XML to PDF via Apache FOP
iText: Convert XML to PDF via iText
excel-poi: Convert XML to Excel via Apache POI
Parameters:
-i (input) Input file
-o (output) Output file
-s (schema) XSD schema file (for xsd and jaxb)
-e (exp) XPath expression (for xpath)
-x (xsl) XSL transformation file (for xslt)
-e (email) user email (for stax)
-f (filter) Filter params: startDate=2023-01-30,endDate=2023-01-30,srtartTime=11:00,endTime=19:00
-t (template) Transform template file (for pdf/excel transformation)
Создание консольного Spring Shell приложения
commit: Init Spring Shell App
mvn spring-boot:run (или как обычное Spring Boot приложение из IDEA)
После старта приложения отображается консоль для ввода команд:
shell:>help
AVAILABLE COMMANDS ...
shell:>help help - info about help
commit: 1_xml_xsd
- Если с XML не имели дело, ознакомтесь с основами:
- Дополнительно:
Схему можно сгенерировать в IDEA (в контекстном меню в xml файле -> Generate XSD Schema from XML File...) и поправить вручную
commit: 2_xsd_validate
-
Создем общий класс класс
Schemas
(его можно использовать в своих приложениях без изменений) и специфичный для нашего приложенияSchemaUtil
-
Вызываем
SchemaUtil.validate
изCommands
и в каталогеscr\test
создаем тесты -
Для запуска JUnit тестов прямо в IDEA ниже версии 2023.2 в pom требуется добавить
junit-platform-launcher
shell:>help xsd
shell:>xsd -i in/usersWithMeals.xml -s in/usersWithMeals.xsd
shell:>xsd -i in/badXmlFile.xml -s in/usersWithMeals.xsd