Это мой XML-модель:Как я могу tweek JAXB сгенерированной Java-модели получить код Java, который я хочу?
<train xmlns="http://www.example.org/train/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<routes>
<route>Route1</route>
<route>Route2</route>
</routes>
</train>
Я хотел бы создать XSD, который даст мне следующий Java:
Train train = new Train();
train.getRoutes().add(new Route());
Я пробовал различные конструкции, то есть жалюзи, русская кукла, салями Slice, но конечный результат всегда Java, как это:
Train train = new Train();
train.getRoutes().getRoute().add("Route1");
Вот XSD документы я пытался до сих пор:
Жалюзи
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://www.example.org/train/">
<xs:element xmlns:tra="http://www.example.org/train/" name="train" type="tra:trainType"/>
<xs:complexType name="routesType">
<xs:sequence>
<xs:element type="xs:string" name="route" maxOccurs="unbounded" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="trainType">
<xs:sequence>
<xs:element xmlns:tra="http://www.example.org/train/" type="tra:routesType" name="routes"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
Русский Doll
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://www.example.org/train/">
<xs:element name="train">
<xs:complexType>
<xs:sequence>
<xs:element name="routes">
<xs:complexType>
<xs:sequence>
<xs:element type="xs:string" name="route" maxOccurs="unbounded" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
салями фрагмент
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://www.example.org/train/">
<xs:element name="route" type="xs:string"/>
<xs:element name="routes">
<xs:complexType>
<xs:sequence>
<xs:element xmlns:tra="http://www.example.org/train/" ref="tra:route" maxOccurs="unbounded" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="train">
<xs:complexType>
<xs:sequence>
<xs:element xmlns:tra="http://www.example.org/train/" ref="tra:routes"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Может кто-нибудь сказать мне, что я делаю неправильно?
Обертка элемента может работать, если я собирался с Явы в XSD, но я собираюсь из XSD в Java. – dasPing
Пожалуйста, внимательно перечитайте мой ответ. Jaxb-xew-plugin - это плагин генерации кода, специально предназначенный для случая XSD -> Java, который у вас есть. – lexicore
Вы правы, плагин выглядит так, будто это может быть решение. Интересно. – dasPing