2012-04-04 2 views
9

정렬 화에서 요소를 제외하는 방법 나는 나의 모델이 있습니다MOXY JAXB :

@XmlRootElement 
@XmlAccessorType(XmlAccessType.FIELD) 
public class CustomerTest { 

    private Long id; 

    @XmlPath("contact-info/billing-address") 
    private AddressTest billingAddress; 

    @XmlPath("contact-info/shipping-address") 
    private AddressTest shippingAddress; 

    @XmlPath("FileHeader/SchemaVersion/text()") 
    private String schemaVersion; 
} 

을 그리고이 같은 객체를 입력 :

<customerTest xmlns:fe="http://www.facturae.es/Facturae/2009/v3.2/Facturae" xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> 
    <id>10</id> 
    <contact-info> 
     <billing-address> 
     <street>1 Billing Street</street> 
     </billing-address> 
     <shipping-address> 
     <street>2 Shipping Road</street> 
     </shipping-address> 
    </contact-info> 
    <FileHeader> 
     <SchemaVersion>3.2</SchemaVersion> 
    </FileHeader> 
</customerTest> 
:

private void marshallCustomerTest() { 
     try { 
      JAXBContext jc = JAXBContext.newInstance(CustomerTest.class); 

      CustomerTest customer = new CustomerTest(); 
      customer.setId(new Long(10)); 
      customer.setSchemaVersion("3.2"); 

      AddressTest billingAddress = new AddressTest(); 
      billingAddress.setStreet("1 Billing Street"); 
      customer.setBillingAddress(billingAddress); 

      AddressTest shippingAddress = new AddressTest(); 
      shippingAddress.setStreet("2 Shipping Road"); 
      customer.setShippingAddress(shippingAddress); 

      Marshaller m = jc.createMarshaller(); 
      m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); 
      m.marshal(customer, System.out); 
     } catch (JAXBException jex) { 
      jex.printStackTrace(); 
      log.error(jex); 
     } 
    } 

이 다음 XML을 생성

'id'속성에는 @XmlPath annotation이 없지만 이것은 최종 XML에도 있습니다. 나는이 동작을 null로 설정하는 'id'속성을 피할 수 있지만 다른 방법이 있는지 알고 싶습니다. 요점은 내 실제 모델이이 모델보다 훨씬 크고 null을 많은 속성으로 설정해야한다는 것입니다.

어떤 도움이 필요합니까? 사전에

감사합니다.

답변

15

당신은 @XmlTransient와 속성을 표시 할 수 있습니다 중 하나는 그것이 XML 표현에서 제외 가지고 :

@XmlTransient 
private Long id; 

또는 그렇게 만 주석 필드/속성 매핑됩니다 @XmlAccessorType(XmlAccessType.NONE)으로 유형 주석을 달 수 있습니다. 추가 정보

@XmlAccessorType(XmlAccessType.NONE) 
public class CustomerTest { 

+1

감사합니다! 당신은 항상 매우 도움이됩니다. – rocotocloc