Estoy usando la propiedad JAXB_FRAGMENT para que mi Marshaller se margine en el nivel WorkSet. El problema es que cuando obtengo el atributo Workforce, el elemento xmlns se atribuye cada vez. ¿Hay alguna forma de reunir para que no adjunte el atributo xmlns? Así es como se ve mi XML.JAXB Fragment Marshal sin el espacio de nombres
<Import>
<WorkSets>
<WorkSet xmlns="http://www.namespace.com">
<Work>
<Work>
...
..
...
</WorkSet>
<WorkSet xmlns="http://www.namespace.com">
<Work>
<Work>
...
</WorkSet>
</WorkSets>
</Import>
Aquí está el código que estoy utilizando el crear lo anterior:
FileOutputStream fos = new FileOutputStream("import.xml");
XMLStreamWriter writer = XMLOutputFactory.newFactory().createXMLStreamWriter(fos);
JAXBContext jc = JAXBContext.newInstance(WorkSet.class);
Marshaller m = jc.createMarshaler();
m.setProperty(Marshaller.JAXB_FRAGMENT, Boolean.TRUE);
writer.writeStartDocument();
writer.writeStartElement("Import");
writer.writeAttribute("xmlns","http://www.namespace.com");
writer.writeStartElement("WorkSets");
while(hasWorkSet){
m.marshal(workSet, writer)
}
writer.writeEndDocument();
writer.close();
¿Quieres tener la declaración de espacio de nombres más arriba en el documento, o no quieres un espacio de nombre declarado en absoluto? –
@BlaiseDoughan Estoy escribiendo las etiquetas Importar y WorkSets manualmente a través de un XMLStreamWriter, así que también configuré sus atributos manualmente. Estoy usando JAXB para ordenar una colección de instancias de WorkSet, que funciona bien, simplemente no quiero el atributo xmlns asociado a cada una. No puso los atributos xmlns en WorkSet cuando utilicé JAXB para reunir la instancia XML completa (Importar, Trabajos, Trabajo, Trabajo ...). Solo comenzó cuando cambié JAXB_FRAGMENT para alinear solo WorkSet. – TyC
@BlaiseDoughan He estado buscando a través de la API de JAXB y aún no puedo ver qué causa el espacio de nombres en el elemento WorkSet. – TyC