2013-06-04 41 views
0

我有一個名爲ObjectClass的類,它是由JibX從.xsd文件自動生成的。爲了防止類名稱問題,這個類已經退居到了自己的包,如擴展JibX自動生成類的類的綁定和解除綁定

com.CompanyName.ProductName.SDK.Device.GetCommandsResponse.ObjectClass

此類結合和預期的解除綁定。

我想創建一個空的類來擴展上面的類,我想知道新的類將使用原始的ObjectClass綁定正確綁定和解除綁定嗎?或者我必須嘗試爲這個新的擴展程序做一個獨特的綁定?

新類類似於這樣

public class deviceGetCommandsResponse extends 
com.CompanyName.ProductName.SDK.Device.GetCommandsResponse.ObjectClass 
{ 
    /// This is empty 
} 

的這本打算是要通過提供獨特的名稱爲鑄造第三方開發商的物體更容易/少些麻煩。

所以不是

(com.CompanyName.ProductName.SDK.Device.GetCommandsResponse.ObjectClass) SomeReturnFromAMethod 

他們可以使用

(deviceGetCommandsResponse) SomeReturnFromAMethod; 

,並擁有所有相同的功能。

從更廣泛的角度來看,我將如何爲JibX生成的類創建適配器模式?

回答

0

你的問題的答案是肯定的,JiBX將在擴展課程中正常工作。

你這樣做之前,我會考慮這些選項:

首先,默認包名稱是命名空間URL的位置,默認的類名是頂級元素這是大多數綁定一個很好的選擇。

例如,如果我的架構定義的是:

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://www.jibx.org/sampleschema/person" elementFormDefault="qualified" targetNamespace="http://www.jibx.org/sampleschema/person"> 
<xs:element name="person"> 
<xs:complexType> 
<xs:sequence> 
<xs:element name="firstName" type="xs:string"/> 
<xs:element name="lastName" type="xs:string"/> 
</xs:sequence> 
</xs:complexType> 
</xs:element> 
</xs:schema> 

生成的類將是:

package org.jibx.sampleschema.person; 
public class Person 
{ 
    private String firstName; 
    private String lastName; 
    ... 

您的代碼將改爲:

Person person = new Person(); 
person.setFirstName("Don"); 

這是非常合乎邏輯和很乾淨。擁有全球唯一的類名非常有用,尤其是在使用公共模式定義的情況下。將您的綁定釋放爲開源將爲使用相同模式的其他人節省一些時間。

如果默認值不可接受,那麼通過設置JiBX配置來更改軟件包和/或類名稱非常簡單。

我希望這有助於!

唐科利
JiBX投稿人