2013-11-09 3 views
3

Мне нужно передать пространство имен для корневого элемента динамически, а маршаллинг с использованием jaxb (JAXB 2.1.10 - JDK 6). я буду использовать genrated xml для вызова различных веб-сервисов, которые квалифицируются с разными пространствами имен, но с одним и тем же входным xml. вот мой пример jaxb аннотированный класс ..... наведите меня на свои ценные входы.JAXB Marshalling имя пространства имен для корневого элемента динамически

@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; 
} 

}

пространство имен "АВС" необходимо пройти динамически с другим значением.

ответ

2

Вы можете обернуть корневой объект в экземпляр JAXBElement, чтобы предоставить альтернативное имя и пространство имен.

+1

Спасибо за ваш вклад. теперь я могу динамически передавать пространство имен с помощью элемента QName в jaxb. просто обновление с примером кода для того же marshaller.marshal (новый JAXBElement (новое QName (ns, «TaskRequest»), TaskRequest.class, запрос), System.out); – Venkat

Смежные вопросы