Я использую xjc для генерации Java-классов из схемы XML, а следующая - отрывок из XSD.XML-схема для Java-классов с XJC
<xs:element name="NameInfo">
<xs:complexType>
<xs:sequence>
<xs:choice>
<xs:element ref="UnstructuredName"/> <!-- This line -->
<xs:sequence>
<xs:element ref="StructuredName"/>
<xs:element ref="UnstructuredName" minOccurs="0"/> <!-- and this line! -->
</xs:sequence>
</xs:choice>
<xs:element ref="SomethingElse" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
По большей части сгенерированные классы являются хорошо, но для вышеупомянутого блока я хотел бы получить что-то вроде:
public List<Object> getContent() {
if (content == null) {
content = new ArrayList<Object>();
}
return this.content;
}
со следующим комментарием над ним:
* You are getting this "catch-all" property because of the following reason:
* The field name "UnstructuredName" is used by two different parts of a schema. See:
* line XXXX of file:FILE.xsd
* line XXXX of file:FILE.xsd
* To get rid of this property, apply a property customization to one
* of both of the following declarations to change their names:
* Gets the value of the content property.
У меня есть разместил комментарий в конце двух строк.
На данный момент я не думаю, что будет легко изменить схему, поскольку это было решено между поставщиками, и я бы не хотел идти по этому маршруту (если это возможно), так как это немного замедлит ход.
Я искал и нашел this page, является ли внешняя настройка тем, что я хочу сделать? В основном я работаю с созданными классами, поэтому я не совсем знаком с процессом, который генерирует эти классы. Простой пример «настройки свойств» был бы замечательным! Альтернативный метод генерации классов Java был бы прекрасен, пока схема все еще может быть использована.
EDIT: Я должен уточнить, что два UnstructuredName
действительно являются одним и тем же элементом.
Я не совсем уверен, как перестановке элементы могут помочь в этом случае. Если я могу внутренняя «последовательность» в другой элемент, эта проблема будет решена? Возможно ли это с преобразованием? Если я выполняю какое-то преобразование, мне понадобится преобразовать его в структуру, которая мне нравится, а затем выполнить другое преобразование обратно в ее исходную структуру? – nevets1219