使用Java Marshaller更改名称空间根名称

时间:2019-01-02 13:26:51

标签: java xml jaxb marshalling

我使用Java wsimport工具从WSDL生成了一个Web服务客户端。 但是,当我使用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="(...)"

这就是我使用Marshaller的方式:

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 :(得分:0)

下面是适合我的代码。这应该对您有用。

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);