2013-04-03 11 views
5

Może to być związane z JAXB Marshaller - How do I suppress xmlns namespace attributes?usuń atrybut xmlns od elementu głównego podczas zestawiania JAXB

Ale mój problem jest nieco inna. Wykonuję regularne porządkowanie java, a mój xsd nie ma przestrzeni nazw. Wygenerowany xml również nie ma przestrzeni nazw, z wyjątkiem elementu głównego.

<?xml version="1.0" encoding="UTF-8"?><rootElement xmlns:ns2="unwanted namespace"> 

unwanted namespace jest z innego schematu z tego samego projektu i nie jestem pewien, dlaczego, który jest podejmowany na tym etapie.

Moja rootElement.java generowane przez jaxb2-maven-plugin wygląda następująco:

@XmlAccessorType(XmlAccessType.FIELD) 
@XmlType(name = "", propOrder = { 
"feed" 
}) 
@XmlRootElement(name = "rootElement", namespace = "") 
public class RootElement{ 
.... 
} 

W tym momencie wszystko czego chcę to, aby pozbyć się tego atrybutu z wygenerowanym xml xmlns:ns2="unwanted namespace" i walczę z nim.

Spojrzałem na package-info.java i wygląda na to:

@javax.xml.bind.annotation.XmlSchema(namespace = "unwanted namespace", elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED) 
package com.mypackage; 

Próbowałem dodanie he -npa ale to przyzwyczajenie praca na jaxb2-maven-plugin z jakiegoś powodu. Próbowałem NamespaceMapper, ale to działa na zmianę przedrostków. Nie mogłem tego zrobić, żeby całkowicie usunąć przestrzeń nazw. To przeszkadza mi na jeden dzień.

Odpowiedz

1

Mam podobne wymagania w tej chwili. Jedynym rozwiązaniem, które zadziałało, jest implementacja opakowania dla XMLStreamWriter.

Proszę spojrzeć na moją odpowiedź here. Opisałem tam również inne rozwiązania, które wypróbowałem.

serializacji przy użyciu kodu z linku powyżej wygląda następująco:

XMLOutputFactory factory = XMLOutputFactory.newFactory(); 

StringWriter writer = new StringWriter(XML_BUFFER_INITIAL_SIZE); 
XMLStreamWriter xmlWriter = null; 

try { 
    xmlWriter = factory.createXMLStreamWriter(writer); 
    JAXBContext context = JAXBContext.newInstance(MyJAXBGeneratedClass.class); 
    Marshaller marshaller = context.createMarshaller(); 
    marshaller.marshal(reportContainer, new NamespaceStrippingXMLStreamWriter(xmlWriter)); 
    xmlWriter.flush(); 
} 
finally { 
    if (xmlWriter != null) 
    xmlWriter.close(); 
} 

return writer.toString(); 
Powiązane problemy