Jaxb generated xml - problem with root element prefix

前端 未结 5 1860
别那么骄傲
别那么骄傲 2020-12-30 10:42

I am trying to generate xml using jaxb. I created xsd and generated java classes. But when I generate xml, I am geeting prefix ns2 to the root tag, which I don\'t want.

5条回答
  •  挽巷
    挽巷 (楼主)
    2020-12-30 11:06

    If this is your class:

    package example;
    
    import javax.xml.bind.annotation.XmlRootElement;
    
    @XmlRootElement(name="report",namespace="urn:report")
    public class Root {
    
        private String id;
    
        public String getId() {
            return id;
        }
    
        public void setId(String id) {
            this.id = id;
        }
    
    }
    

    Then it makes sense that there is a prefix on the root element, because you have specified that the "root" element is namespace qualified and the "id" element is not.

    
        123
    
    

    If you add a package-info class to your model, you can leverate the @XmlSchema annotation:

    @XmlSchema(
            namespace = "urn:report",
            elementFormDefault = XmlNsForm.QUALIFIED)
    package example;
    
    import javax.xml.bind.annotation.XmlNsForm;
    import javax.xml.bind.annotation.XmlSchema;
    

    Then the JAXB implementation may choose to leverage the default namespace, but note now all of the elements are namespace qualified which may or may not match your XML schema:

    
        123
    
    

    For more information on JAXB and namespaces see:

    • http://bdoughan.blogspot.com/2010/08/jaxb-namespaces.html

提交回复
热议问题