2017-01-04 17 views
0

Учитывая 2 элемента a и b в файле XSD. Оба имеют тип int, но разница заключается в том, что a имеет minOccurs="0", а b - нет. Итак, теперь, когда из этого XSD генерируется Java-класс, он содержит тип Integer, тогда как b имеет тип int. Пожалуйста, объясни.Преобразование XSD в Java отличается для элементов с minOccurs = "0", чем для элементов со значением по умолчанию

<?xml version="1.0" ?> 
<xs:complexType name="SearchAB"> 
<xs:element name="a" minOccurs="0" type="xs:int"> 
<xs:annotation>`enter code here` 
    <xs:documentation>a</xs:documentation> 
</xs:annotation> 
</xs:element> 
<xs:element name="b" type="xs:int"> 
<xs:annotation> 
    <xs:documentation>b</xs:documentation> 
</xs:annotation> 
</xs:element>" 
</xs:complexType> 

класса Java:

protected Integer a; 
protected int b; 
+0

XSD выглядит следующим образом: <хз: ComplexType имя = "SearchAB"> "<хз: Элемент имя =" а "MinOccurs =' '" 0" Тип =» хз: ИНТ "> \t <хз: аннотация> \t \t <хз: документация> а \t <хз: имя = элемент" б "Тип =" хз: ИНТ "> \t <хз: аннотация> \t \t <хз: документация> б \t « ShiwamP

+1

Пожалуйста, отредактируйте прямо ваш код! –

+0

Какую библиотеку вы используете для генерации кода Java из XSD? – hagrawal

ответ

1

Случай б
По умолчанию и maxOccurs="1". Следовательно, существует ровно один целочисленный элемент (не меньше и не больше), и его можно эффективно сопоставить с простым int.

Случай а
Если элемент установлен minOccurs="0", это не является обязательным. Однако на Java, an int cannot be null. Итак, какое значение вы бы использовали для представления того, что элемент опущен? Чтобы справиться с этой возможностью, значение, таким образом, сохраняется как объект Integer, который может быть null. Итак, если элемент присутствует, переменная a будет иметь целочисленное значение. В противном случае для представления пропущенного элемента установлено значение null.

 Смежные вопросы

  • Нет связанных вопросов^_^