Обзор Привет! В этой статье я хочу описать программу проверки XML с использованием Spring Framework. Самая очевидная область применения такой проверки — программирование веб-сервисов.
Проверка осуществляется посредством преобразования XML-Java (демаршаллинга) согласно соответствующей схеме XSD. Файл XML считается проверенным, если преобразование XML в объект Java прошло успешно.
Проект компилируется в jar-файл и запускается из командной строки.
Для красоты прилагается Apache ANSI Printer, в котором можно задать шрифт, цвет и выделение текста в cmd. Исходный код доступен на GitHub здесь.
Итак, давайте начнем.
1. Исходные файлы и диаграммы
В качестве входных данных мы определим 2 XML-файла Address.xml и Client.xml. Адрес.xml:
Клиент.xml:<Эxml version="1.0" encoding="UTF-8"?> < ns:Request xmlns:ns="http://www.tempuri.org/types "> <Version>V001.000.00</Version> <Address> <Apartment>50</Apartment> <House>7</House> <Street>Sadovaya</Street> <City>SPB</City> <Country>Russia</Country> <Index>123456</Index> </Address> </ ns:Request >
<Эxml version="1.0" encoding="UTF-8"?>
< ns:Request xmlns:ns="http://www.tempuri.org/types ">
<Version>V001.000.00</Version>
<Client>
<Id>12</Id>
<Name>A</Name>
</Client>
<Client>
<Id>34</Id>
<Name>B</Name>
</Client>
</ ns:Request >
Далее мы определим схемы XSD XmlValidator.xsd, ComplexTypes.xsd и SimpleTypes.xsd с помощью описание контейнера «CombinedType» и объектов типов «Адрес» и «Клиент»: XmlValidator.xsd:
<Эxml version="1.0" encoding="ISO-8859-1"?>
< xsd:schema xmlns:ns="http://www.tempuri.org/types "
xmlns:xsd="http://www.w3.org/2001/XMLSchema "
xmlns:ict="complextypes "
targetNamespace=" http://www.tempuri.org/types "
elementFormDefault="qualified">
< xsd:import namespace="complextypes" schemaLocation="complextypes.xsd"/>
< xsd:annotation >
< xsd:documentation >XSD structure</ xsd:documentation >
</ xsd:annotation >
< xsd:element name="Combined" type=" ict:CombinedType ">
< xsd:annotation >
< xsd:documentation >XML definition</ xsd:documentation >
</ xsd:annotation >
</ xsd:element >
</ xsd:schema >
ComplexTypes.xsd
<Эxml version="1.0" encoding="ISO-8859-1"?>
< xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema "
xmlns="complextypes"
xmlns:ist="simpletypes "
targetNamespace="complextypes">
< xsd:import namespace="simpletypes" schemaLocation="simpletypes.xsd"/>
< xsd:complexType name="CombinedType">
< xsd:sequence >
< xsd:element name="Version" type=" ist:VersionType ">
< xsd:annotation >
< xsd:documentation >The version</ xsd:documentation >
</ xsd:annotation >
</ xsd:element >
< xsd:choice >
< xsd:element name="Address" type="AddressType" maxOccurs="1">
< xsd:annotation >
< xsd:documentation >Address type</ xsd:documentation >
</ xsd:annotation >
</ xsd:element >
< xsd:element name="Client" type="ClientType" maxOccurs="unbounded">
< xsd:annotation >
< xsd:documentation >Client type</ xsd:documentation >
</ xsd:annotation >
</ xsd:element >
</ xsd:choice >
</ xsd:sequence >
</ xsd:complexType >
< xsd:complexType name="AddressType">
< xsd:sequence >
< xsd:element name="Apartment" type=" ist:ApartmentType ">
< xsd:annotation >
< xsd:documentation >Apartment number</ xsd:documentation >
</ xsd:annotation >
</ xsd:element >
< xsd:element name="House" type=" ist:HouseNumberType ">
< xsd:annotation >
< xsd:documentation >House number</ xsd:documentation >
</ xsd:annotation >
</ xsd:element >
< xsd:element name="Street" type=" ist:StreetType ">
< xsd:annotation >
< xsd:documentation >Street name</ xsd:documentation >
</ xsd:annotation >
</ xsd:element >
< xsd:element name="City" type=" ist:CityType ">
< xsd:annotation >
< xsd:documentation >City name</ xsd:documentation >
</ xsd:annotation >
</ xsd:element >
< xsd:element name="Country" type=" ist:CountryType ">
< xsd:annotation >
< xsd:documentation >Country name</ xsd:documentation >
</ xsd:annotation >
</ xsd:element >
< xsd:element name="Index" type=" ist:IndexType " minOccurs="0">
< xsd:annotation >
< xsd:documentation >Postal index</ xsd:documentation >
</ xsd:annotation >
</ xsd:element >
</ xsd:sequence >
</ xsd:complexType >
< xsd:complexType name="ClientType">
< xsd:sequence >
< xsd:element name="Id" type=" ist:IdType ">
< xsd:annotation >
< xsd:documentation >The id</ xsd:documentation >
</ xsd:annotation >
</ xsd:element >
< xsd:element name="Name" type=" ist:NameType ">
< xsd:annotation >
< xsd:documentation >The name</ xsd:documentation >
</ xsd:annotation >
</ xsd:element >
</ xsd:sequence >
</ xsd:complexType >
</ xsd:schema >
SimpleTypes.xsd
<Эxml version="1.0" encoding="ISO-8859-1"?>
< xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema "
Теги: #java #xml #xsd #spring framework #jaxb
Вместе с данным постом часто просматривают:
-
Технология Флэш-Памяти 3D Nand
19 Oct, 24 -
Готовый Мониторинг За 10 Минут И 0 Рублей
19 Oct, 24 -
Уязвимость Airos
19 Oct, 24 -
Интерфейс Адм – Что Такое «Тетрад»
19 Oct, 24