2011-10-04 64 views
1

我想通過使用spring和jaxb調用簡單的XML over HTTP服務。該服務具有其請求attribtues之一作爲 <的xsd:屬性名= 「版本」 類型= 「XSD:hexBinary類型」 使用= 「需要」/ >JaxB - 設置HexBinary值

JAXB生成相應的Java包裝對象作爲

/** 
* Gets the value of the version property. 
* 
* @return 
*  possible object is 
*  {@link String } 
*  
*/ 
public byte[] getVersion() { 
    return version; 
} 

/** 
* Sets the value of the version property. 
* 
* @param value 
*  allowed object is 
*  {@link String } 
*  
*/ 
public void setVersion(byte[] value) { 
    this.version = ((byte[]) value); 
} 

在這裏,我的版本實際上是一個內部很長的儘管服務定義它爲hexbinary。我無法控制將該類型從hexbinary轉換爲unsignedint的服務實現。

在向服務發出請求時,我喜歡將版本號設置爲myBean.setVersion(12爲字節),其中12只是一個很長的數字。如何將long轉換爲byte []以便能夠調用setVersion();

謝謝, Siva。

+0

誰能給上轉換長hexBinary類型的例子。 – Siva

回答

2
byte[] longToBytes(long value) { 
    final byte[] bytes = new byte[8]; 
    for (int i = bytes.length - 1; i >= 0; i--) { 
     bytes[i] = (byte)(value & 0xFF); 
     value >>>= 8; 
    } 
} 

默認爲byte[]綁定xsd:base64Binary

你可以改變它像

@XmlElement 
@XmlSchemaType(name="hexBinary") 
public byte[] getVersion() { 
    return version; 
}