Системное оборудование, для которого я пишу программное обеспечение, физически подключено через оборудование в древовидной структуре.Модель данных в нашем приложении - это Дерево.Для нашего нового переписывания мы используем JAXB для создания модели данных.
У нас есть три типа устройств, и все они имеют общие свойства некоторые , поэтому я сделал Abtract DeviceType вXSD схема.Все три моих устройства (Pushers, Switchers, Receivers) все расширяются от DeviceType в XSD следующим образом:
<xs:complexType name="DeviceType" abstract="true">
<xs:sequence>
<xs:element name="atrr1" type="xs:int"></xs:element>
<xs:element name="attr2" type="xs:int"></xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="PusherType">
<xs:complexContent>
<xs:extension base="pts:DeviceType">
<xs:sequence>
<xs:element name="Switcher" type="pts:SwitcherType" minOccurs="1"></xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="SwitcherType">
<xs:complexContent>
<xs:extension base="pts:DeviceType">
<xs:sequence>
<xs:element name="switcher" type="pts:SwitcherType" minOccurs="1"></xs:element>
<xs:element name="receiver" type="pts:ReceiverType" minOccurs="1"></xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
Pushers имеют только дочерние элементы switcher, а switchers могут иметь как дочерние элементы switcher, так и получателя.Приемники - это конец линии (конечные узлы).xjc строит классы.Я получил Unmarshaller для создания дерева объектов, но я не могу понять, как получить метод получения для getDevice ().Для обхода дерева я надеялся, что JAXB предоставит что-то вроде «getChildren», но я не вижу в API.Если я получаю объект переключателя, у меня есть методы для getSwitcher () и getReceiver (), но нет метода getDevice ().Но я стараюсь избегать использования instanceof при полном обходе дерева.Java-код, который создает xjc, действительно выходит из класса Device, но я просто не узнал, как получить универсальный метод получения для всех устройств.Я только начал работать с Jaxb два дня назад, и у меня есть масса знаний об API Jaxb.
Вчера у меня был первый день игры с JAXB, я думаю, этот инструмент невероятно хорошо подходит нашей системе.Наше оборудование буквально является деревом, у нас есть несколько развертываний, и использование XML в качестве файла конфигурации нашего сайта для построения модели состояния было бы идеальным.
Есть предложения для новичка JAXB здесь?