2011-08-25 7 views
2

JAXB는 XSD base64Binary 및 hexBinary에서 바이트 배열로 생성됩니다. base64Binary있는 xsd 요소가 있습니다. 이것은 엄격하며 변경할 수 없습니다. 그러나이 요소에서 우리는 hexBinary의 가치를가집니다 (조금 혼동 스러워요). 그리고 지금 그것이 문제가되는 곳. JAXB가 이러한 요소를 비 정렬 화하는 방법은 없지만 나에게 sutaible이 아닌 것은 있습니다. 그래서 내 요소에 hexBinary가있을 수 있다면 오른쪽 정렬을 해제해야합니다. 하지만 내 사건 요소에는 base64Binary 유형이 있고 JAXB는이 요소를 다른 요소에 대해 비표준 화합니다. JAXB가 이러한 요소를 처리하는 방법을 변경하고 이러한 요소가 hexBinary가 될 것이므로 처리하도록 지시하는 방법이 있습니까? 아마도 혼란스러운 질문이 있지만 도움이 필요합니다. 그래서 곧 방법으로xsd : base64Binary 비 정렬 화 문제

나는 요소 base64Binary 인이 있지만 이러한 hexBinary에 관한 스펙 수있는 바와 같이, 비 정렬 화하기 위해 JAXB에게 싶어

나는 새 (때문에) XmlAdapter를 만들 필요가 뭔가를 읽을 수 있지만 나는 내가 있기 때문에 그것을 사용한다 곳에 잘 모릅니다

JAXB

생성 단지 수업을

업데이트 :이 문제입니다 발견

. 요소가 생성 된 클래스에 base64Binary 인을 때 그것은이

XmlElement(name="name") protected byte[] element 

를 생성하지만이 경우 hexBinary에 관한 스펙으로는 내가 base64Binary 인
때 JAXB이 어댑터를 사용하는 말을하는 방법을 알아야 그래서 지금

XmlJavaTypeAdapter(HexBinaryAdapter.class) XmlElement(name="name") protected byte[] element 

를 만들 보호 바이트 [] 엘리먼트

답변

2

UPDATE

당신은 당신이 JAXB 스키마 바인딩이 같은 파일을 사용하여 원하는 일을 할 수 있어야 다음

<jxb:bindings 
    xmlns:xs="http://www.w3.org/2001/XMLSchema" 
    xmlns:jxb="http://java.sun.com/xml/ns/jaxb" 
    version="2.1"> 
    <jxb:bindings schemaLocation="YourSchema.xsd"> 
     <jxb:bindings node="//xs:element[@name='element']"> 
      <jxb:property> 
       <jxb:baseType> 
        <jxb:javaType name="byte[]" 
         parseMethod="javax.xml.bind.DatatypeConverter.parseHexBinary" 
         printMethod="javax.xml.bind.DatatypeConverter.printHexBinary"/> 
       </jxb:baseType> 
      </jxb:property> 
     </jxb:bindings> 
    </jxb:bindings> 
</jxb:bindings> 

몇 가지 옵션이 있습니다

옵션 #은 1-@XmlSchemaType

@XmlSchemaType 주석을 사용하여 스키마 표현을 제어 할 수 있습니다.

@XmlSchemaType(name="hexBinary") 
private byte[] hexBinary; 

@XmlSchemaType(name="base64Binary") 
private byte[] base64Binary; 

옵션 # 2-XmlAdapter

당신은 XML 스키마에서 모델을 생성하고 대신 (때문에) XmlAdapter를 활용하고자하는 경우, 다음의 예는 할 수있는 방법을 보여줍니다

+0

네,하지만 어떻게 생성 된 클래스에서 이것을 설정할 수 있습니까? – hudi

+0

@hudi - XML ​​스키마에서 base64Binary를 가지고 있지만 해당 XML 요소가 hexBinary 데이터를 나타내는 것이 맞습니까? –

+0

네가 맞다. – hudi

관련 문제