Изменение имени корня пространства имен с помощью Java Marshaller - PullRequest
0 голосов
/ 02 января 2019

Я сгенерировал клиент веб-сервиса из WSDL с помощью инструмента Java wsimport. Но когда я использую класс Marshaller для генерации XML-файла, корневое пространство имен получает имя <Object xmlns:ns2="(...)". Как это:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Object xmlns:ns2="(...)"

Я хотел, чтобы оно имело определенное имя, подобное этому:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <myName xmlns:ns2="(...)"

Вот как я использовал Маршаллера:

Writer w = new StringWriter();
JAXBElement<ObjectType> element = new ObjectFactory().createObject(evt);        

marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
marshaller.marshal(element, w);

1 Ответ

0 голосов
/ 02 января 2019

Ниже код работает для меня. Это должно работать для вас.

JAXBContext jaxbCtx = JAXBContext.newInstance(classToBeBound.getClass());
StringWriter writer = new StringWriter();

Marshaller marshaller = jaxbCtx.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FRAGMENT, Boolean.TRUE);
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
marshaller.marshal(The root of content tree to be marshalled, writer);
...