Java: Marshalling Object -- Removing extra ns2 annotation in xml Java: Marshalling Object -- Removing extra ns2 annotation in xml xml xml

Java: Marshalling Object -- Removing extra ns2 annotation in xml


By adding a namespace URI ("http://www.something.com/something") to the QName used to construct the JAXB element, and leveraging the package level @XmlSchema annotation will get you the namespace qualification that you are looking for:

package-info

@XmlSchema(    namespace="http://www.something.com/something",     elementFormDefault=XmlNsForm.QUALIFIED)package forum7014746;import javax.xml.bind.annotation.*;

Food

package forum7014746;import javax.xml.bind.annotation.XmlRootElement;@XmlRootElementpublic class Food {    private String food;    private String beverage;    public String getFood() {        return food;    }    public void setFood(String food) {        this.food = food;    }    public String getBeverage() {        return beverage;    }    public void setBeverage(String beverage) {        this.beverage = beverage;    }}

Demo

package forum7014746;import javax.xml.bind.JAXBContext;import javax.xml.bind.JAXBElement;import javax.xml.bind.Marshaller;import javax.xml.namespace.QName;public class Demo {    public static void main(String[] args) throws Exception {        JAXBContext jaxbContext = JAXBContext.newInstance(Food.class);        Food foodSchema = new Food();        foodSchema.setFood("steak");        foodSchema.setBeverage("water");        JAXBElement<Food> element = new JAXBElement<Food> (new QName("http://www.something.com/something","FoodSchema"), Food.class, foodSchema);        Marshaller marshaller = jaxbContext.createMarshaller();        marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);        marshaller.marshal(element, System.out);    }}

Output

<?xml version="1.0" encoding="UTF-8" standalone="yes"?><FoodSchema xmlns="http://www.something.com/something">    <beverage>water</beverage>    <food>steak</food></FoodSchema>


add to xsd schema definition elementFormDefault and attributeFormDefault:

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" ...elementFormDefault="qualified" attributeFormDefault="unqualified" ... >


Thanks for answer. Just to give sample code before:

 marshaller.marshal(new  JAXBElement(new QName(**""**,"Document"),Document.class,swiftDoc), sw);

after:

marshaller.marshal(new  JAXBElement(new QName(**"http://www.w3.org/2001/XMLSchema**","Document"),Document.class,swiftDoc), sw);

and extra "ns:" was removed.