Как проверить XML на соответствие XSD в Java

  1. О Панкадж

Java XML Validation API может использоваться для проверки XML на соответствие XSD в Java-программе. Класс javax.xml.validation.Validator используется в этой программе для проверки xml на соответствие xsd в java.


Вот примеры используемых файлов XSD и XML.

Employee.xsd


копия

<? xml version = "1.0&quot; encoding = "UTF-8&quot;?> <schema xmlns = "http://www.w3.org/2001/XMLSchema" targetNamespace = "https://www.journaldev.com/Employee "xmlns: empns =" ​​https://www.journaldev.com/Employee "elementFormDefault =" квалифицированный "> <имя элемента =" empRequest "type =" empns: empRequest "> </ element> <имя элемента =" empResponse " type = "empns: empResponse"> </ element> <complexType name = "empRequest"> <sequence> <element name = "id" type = "int"> </ element> </ sequence> </ complexType> <complexType> name = "empResponse"> <sequence> <element name = "id" type = "int"> </ element> <element name = "role" type = "string"> </ element> <element name = "fullName" type = "string"> </ element> </ sequence> </ complexType> </ schema>

Обратите внимание, что выше XSD также содержит два корневых элемента и пространство имен, я создал два примера XML-файл из XSD с использованием Eclipse ,

EmployeeRequest.xml


копия

<? xml version = "1.0&quot; encoding = "UTF-8&quot;?> <empns: empRequest xmlns: empns = "https://www.journaldev.com/Employee" xmlns: xsi = "http: //www.w3 .org / 2001 / XMLSchema-instance "xsi: schemaLocation =" https://www.journaldev.com/Employee Employee.xsd "> <empns: id> 5 </ empns: id> </ empns: empRequest>

EmployeeResponse.xml


копия

<? xml version = "1.0&quot; encoding = "UTF-8&quot;?> <empns: empResponse xmlns: empns = "https://www.journaldev.com/Employee" xmlns: xsi = "http: //www.w3 .org / 2001 / XMLSchema-instance "xsi: schemaLocation =" https://www.journaldev.com/Employee Employee.xsd "> <empns: id> 1 </ empns: id> <empns: role> Developer </ empns: роль> <empns: полное имя> Панкадж Кумар </ empns: полное имя> </ empns: empResponse>

Вот еще один XML-файл, который не подтверждается Employee.xsd.

employee.xml


копия

<? xml version = "1.0&quot;?> <Employee> <name> Pankaj </ name> <age> 29 </ age> <role> Java Developer </ role> <пол> мужской </ пол> </ Employee>

Вот программа, которая используется для проверки всех трех файлов XML на соответствие XSD. Метод validateXMLSchema принимает XSD и XML-файл в качестве аргумента и возвращает true, если проверка прошла успешно, иначе возвращает false .

XMLValidation.java


копия

пакет com.journaldev.xml; импорт java.io.File; импорт java.io.IOException; import javax.xml.XMLConstants; import javax.xml.transform.stream.StreamSource; import javax.xml.validation.Schema; import javax.xml.validation.SchemaFactory; import javax.xml.validation.Validator; import org.xml.sax.SAXException; открытый класс XMLValidation {открытый статический void main (String [] args) {System.out.println ("EmployeeRequest.xml проверяется на соответствие Employee.xsd?" + validateXMLSchema ("Employee.xsd", "EmployeeRequest.xml")); System.out.println («EmployeeResponse.xml проверяется на соответствие Employee.xsd?» + ValidateXMLSchema («Employee.xsd», «EmployeeResponse.xml»)); System.out.println («employee.xml проверяет соответствие Employee.xsd?» + ValidateXMLSchema («Employee.xsd», «employee.xml»)); } public static boolean validateXMLSchema (String xsdPath, String xmlPath) {try {SchemaFactory factory = SchemaFactory.newInstance (XMLConstants.W3C_XML_SCHEMA_NS_URI); Схема schema = factory.newSchema (новый файл (xsdPath)); Validator validator = schema.newValidator (); validator.validate (новый StreamSource (новый файл (xmlPath))); } catch (IOException | SAXException e) {System.out.println ("Exception:" + e.getMessage ()); вернуть ложь; } вернуть истину; }}

Вывод вышеуказанной программы:


копия

EmployeeRequest.xml проверяет соответствие Employee.xsd? true EmployeeResponse.xml проверяется на соответствие Employee.xsd? true Исключение: cvc-elt.1: не удается найти объявление элемента 'Employee'. employee.xml проверяет соответствие Employee.xsd? ложный

Преимущество использования API проверки XML Java состоит в том, что нам не нужно анализировать файл, и не используются сторонние API.

О Панкадж

Я люблю технологии с открытым исходным кодом, и рассказывать о своем опыте с ними - моя страсть. Вы можете связаться со мной напрямую на facebook , щебет , а также YouTube ,

Quot; encoding = "UTF-8"?
Quot; encoding = "UTF-8"?
Quot; encoding = "UTF-8"?
Quot;?
Xsd?
Xsd?
Xsd?
Xsd?
Xsd?
Xsd?