2013-11-09 2 views
3

jaxb (JAXB 2.1.10 - JDK 6)를 사용하여 마샬링하는 동안 루트 요소의 네임 스페이스를 동적으로 전달해야합니다. 나는 다른 네임 스페이스이지만 동일한 입력 XML로 정규화 된 다른 webservices를 호출하기 위해 genrated xml을 사용할 것이다. 여기 내 샘플 jaxb annotated class ..... 귀중한 정보를 안내해줍니다.JAXB 루트 요소에 대한 동적 네임 스페이스를 마샬링

@XmlAccessorType(XmlAccessType.FIELD) 
@XmlType(name = "", propOrder = { 
    "taskName", 
    "taskType" 
}) 
@XmlRootElement(name = "TaskRequest", namespace = "ABC") 
public class TaskRequest { 

@XmlElement(name = "TaskName", required = true, namespace = "XYZ") 
protected String taskName; 
@XmlElement(name = "TaskType", required = true, namespace = "XYZ") 
protected String taskType; 

public String getTaskName() { 
    return taskName; 
} 

public void setTaskName(String value) { 
    this.taskName = value; 
} 

public String getTaskType() { 
    return taskType; 
} 

public void setTaskType(String value) { 
    this.taskType = value; 
} 

}

네임 "ABC"는 다른 값으로 동적으로 전달해야한다.

답변

2

대체 이름과 네임 스페이스 정보를 제공하기 위해 JAXBElement의 인스턴스에 루트 개체를 래핑 할 수 있습니다.

+1

입력 해 주셔서 감사합니다. 이제 jaxb의 QName 요소를 사용하여 동적으로 네임 스페이스를 전달할 수 있습니다. 동일한 marshaller.marshal (새로운 JAXBElement (새로운 QName (ns, "TaskRequest"), TaskRequest.class, 요청), System.out)에 대한 샘플 코드로 업데이트하면된다. – Venkat

관련 문제