Я хочу, чтобы значение пространства имен было следующим: <product-lists xmlns="demandware.com/xml/impex/productlist/2009-10-28">
Вот пример:
StaxEventItemWriter<ProductList> staxEventItemWriter = new StaxEventItemWriter<>();
staxEventItemWriter.setResource(new FileSystemResource("test.xml"));
HashMap<String, String> rootElementAttribs = new HashMap<String, String>();
rootElementAttribs.put("xmlns", "demandware.com/xml/impex/productlist/2009-10-28");
staxEventItemWriter.setRootTagName("product-lists");
staxEventItemWriter.setRootElementAttributes(rootElementAttribs);
Jaxb2Marshaller marshaller = new Jaxb2Marshaller();
marshaller.setClassesToBeBound(ProductList.class);
staxEventItemWriter.setMarshaller(marshaller);
staxEventItemWriter.afterPropertiesSet();
staxEventItemWriter.open(new ExecutionContext());
staxEventItemWriter.write(Arrays.asList(new ProductList()));
staxEventItemWriter.close();
Класс ProductList
определяется следующим образом:
@XmlRootElement
private static class ProductList {
// TODO add your fields as required
}
В предыдущем примере создается файл test.xml
с искомым пространством имен:
<?xml version='1.0' encoding='UTF-8'?>
<product-lists xmlns="demandware.com/xml/impex/productlist/2009-10-28">
<productList/>
</product-lists>
Надеюсь, это поможет.