我正在与一个以XML数据作为响应的RESTful API集成。
我已经采用了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>
我已经使用XJC在Java中生成了两个Response类(一个用于正确的响应,一个用于错误)。
我正在尝试反序列化,但是难以理解正确的方法。我最初的想法是尝试先将反序列化反序列化为成功调用的响应,如果它引发异常,则尝试错误响应。从那里我可以检查哪个基于instanceof
,但这似乎很混乱。