Я интегрируюсь с RESTful API, который отвечает данными XML.
Я взял схемы XML и сгенерировал соответствующие классы Java для сериализации / десериализации.
Скажем, дляНапример, я звоню конечной точке, которая должна предоставить информацию о заказе. Он может отвечать одним из двух типов ответов.
Для успешных вызовов:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="response">
<xs:complexType>
<xs:sequence>
<xs:element name="order">
<xs:complexType>
<xs:sequence>
<xs:element name="purchaseOrderNumber" type="xs:string"/>
<xs:element name="warehouse" minOccurs="0" type="xs:string"/>
<xs:element name="customerOrderNumber" minOccurs="0" type="xs:string"/>
......
Для неудачных вызовов:
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="response">
<xs:complexType>
<xs:sequence>
<xs:element name="error">
<xs:complexType>
<xs:sequence>
<xs:element name="code" type="xs:string"/>
<xs:element name="message" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
И я сгенерировал два класса Ответовв Java используется XJC (один для правильного ответа и один для ошибки).
Я пытаюсь десериализовать, но у меня возникают проблемы с пониманием правильного подхода. Сначала я попытался попытаться сначала десериализовать ответ в успешном вызове, если он выдает исключение, а затем попытаться ответить ошибкой. Оттуда я могу проверить, что именно на основе instanceof
, но это кажется грязным.