1
我有一個有趣的XML情況,我試圖爲其編寫XSD。我使用的Web服務以一種不尋常的方式發送響應,因爲它在某種程度上是通用的。XSD元素定義具有相同的名稱,但具有不同的屬性
例如,
Web Service調用1:
<rootElement>
<result>
<resultset>
<row attr="some value" attr2="some value 2" />
</resultset>
</result>
</rootElement>
Web Service調用2:
<rootElement>
<result>
<resultset>
<row someOtherAttr="some value" someOtherAttr2="some value 2" />
</resultset>
</result>
</rootElement>
正如你所看到的,區分兩個Web服務響應的唯一的事情是行元素內的屬性。
我已經嘗試了幾種不同的方法,爲結果元素提供了一個抽象元素,該元素適用於某個點,但我無法弄清楚如何讓JAXB選擇在編組時使用哪個結果元素。
即
... other xs declarations excluded for sanity ...
<xs:element ref="abstractResult" />
... snip ...
<xs:element name="abstractResult" type="ResultType" abstract="true" />
<xs:complexType name="ResultType" abstract="true" />
<xs:complexType name="SomeResultType">
<xs:complexContent>
<xs:extension base="ResultType">
... snip ...
這種方法的問題是JAXB試圖實例抽象與resultType在編組,而不是尋找一個合適的實現。
有什麼辦法可以避免這種情況?
非常感謝!