Продемонстрируйте, что демаршалинг JAXB не загружает схему XSD.JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Продемонстрируйте, что демаршалинг JAXB не загружает схему XSD.

Сообщение Anonymous »


Что касается этого вопроса, учитывая следующую схему под названием customer.xsd:

Следующий XML-документ под названием input.xml:

Джейн Доу И следующий код демаршалинга:

import java.io.File; импортировать java.util.ArrayList; импортировать java.util.List; импортировать javax.xml.bind.JAXBContext; импортировать javax.xml.bind.Unmarshaller; импортировать javax.xml.bind.annotation.XmlRootElement; публичный класс Unmarshal { @XmlRootElement(name = «клиент») публичный статический класс Customer { публичное имя строки; @XmlElement(name="номер-телефона") общедоступный список phoneNumbers = новый ArrayList(); } общедоступный статический класс PhoneNumber {} public static void main(String[] args) выдает исключение { JAXBContext jc = JAXBContext.newInstance(Customer.class); Unmarshaller unmarshaller = jc.createUnmarshaller(); unmarshaller.setSchema(ноль); Клиент клиент = (Клиент) unmarshaller.unmarshal(new File("input.xml")); System.out.println(клиент.имя); } } Код Java способен десериализовать входной XML-документ в экземпляр Customer, даже если этот XML-документ выдает 2 ошибки проверки (указанные внешним редактором):

cvc-maxLength-valid: значение «Джейн Доу» с длиной = «8» не является допустимым для фасета по отношению к maxLength «5» для типа «stringMaxSize5».xml(cvc-maxLength-valid) cvc-type.3.1.3: значение «Джейн Доу» элемента «имя» недопустимо.xml(cvc-type.3.1.3) и

cvc-complex-type.2.4.f: «номер-телефона» может встречаться максимум «2» раза в текущей последовательности. Этот лимит был превышен. На данный момент дочерний элемент не ожидается.xml(cvc-complex-type.2.4.f) Однако это означает, что JAXB не проверил данный ввод XML во время демаршаллинга:

Учитывая, что для unmarshaller.setSchema(null); установлено значение ОТКЛЮЧИТЬ проверку схемы, есть ли способ продемонстрировать, что содержимое файла customer.xsd НЕ БЫЛО к которому обращается JVM при демаршаллинге?

Другими словами, есть ли способ не доверять слепо тому, что JVM не будет загружать ссылки XSD, даже если для проверки схемы явно установлено значение null?

Спасибо.
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»