2012-08-06 6 views
1

RestFul Webservices를 사용하는 Application Development에 JAXB 2.0을 사용하고 있습니다. 요청이 수정되었으므로 요청 XML에 다른 파일/변수가 생깁니다.Jaxb : JAXB Java 클래스를 수정하지 않고 요청 XML 필드 추가

<Root Id="567" att="758" /> 

수정 요청이 질문은

<Root Id="567" att="758" anotherfiledadded ="kiran" /> 

것이다 자동합니다 (UserData를을 ?? 수정없이) UserData를 클래스 (anotherfiledadded) 해당 필드를 추가 할 수있다

아래는 내 UserData 클래스입니다.

@XmlRootElement(name = "Root") 
@XmlAccessorType(XmlAccessType.FIELD) 

public class UserData { 

    @XmlAttribute 
    private String Id; 

    @XmlAttribute 
    private String att; 

// getters and setters 
+0

I : 당신은 플러그인 수이하는 로직 MessageBodyWriter을 통해 JAX-RS를 사용하여 RESTful 서비스를 구현하는 경우 아래의 모든 클래스는 자바 SE 6

JAXBContext jc = JAXBContext.newInstance(UserData.class); JAXBSource source = new JAXBSource(jc, myUserData); StreamResult result = new StreamResult(System.out); TransformerFactory tf = TransformerFactory.newInstance(); StreamSource xslt = new StreamSource("addMyAttribute.xslt"); Transformer t = tf.newTransformer(xslt); t.transform(source, result); 

이후 JDK/JRE에서 사용할 수 있습니다 그것이 가능하다고 생각하지 마십시오. 그런 "알려지지 않은"필드가 너무 많습니까? – adarshr

+0

아니요, 한 필드 만 가져올 것입니다. – Pawan

+0

그러면 왜 그 수업을 수정할 수 없습니까? – adarshr

답변

1

javassist을 사용하여 런타임에 필드를 추가 할 수 있습니다. 하지만 ... Annotation @XmlAttribute을 추가해야 할 필요가 있으며, javassist에 주석을 추가 할 수 있는지 여부를 모르겠다. 어쨌든 시도해보십시오.

참조 : Javassist Add

0

당신은 당신의 XML 문서에 속성을 적용 할 XSLT를 사용할 수 있습니다.