I am creating an xml file whose root elemenet structure shuould be like:
<RootElement xmlns="http://www.mysite.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.mysite.com/abc.xsd">
i created package-info.java class but i can get only one namespace by writing this code:
@XmlSchema( namespace = "http://www.mysite.com", elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED) package myproject.myapp; import javax.xml.bind.annotation.XmlSchema;
Any idea?
XML Namespaces - The xmlns Attribute When using prefixes in XML, a namespace for the prefix must be defined. The namespace can be defined by an xmlns attribute in the start tag of an element. The namespace declaration has the following syntax. xmlns:prefix="URI".
JAXB @XmlRootElement annotation type @XmlRootElement maps a class or an enum type to an XML element. When a top level class or an enum type is annotated with the @XmlRootElement annotation, then its value is represented as XML element in an XML document.
One of the primary motivations for defining an XML namespace is to avoid naming conflicts when using and re-using multiple vocabularies. XML Schema is used to create a vocabulary for an XML instance, and uses namespaces heavily.
Below is some demo code that will produce the XML you are looking for. You can use the Marshaller.JAXB_SCHEMA_LOCATION
property to specify the schemaLocation
this will cause the http://www.w3.org/2001/XMLSchema-instance
namespace to be automatically declared.
Demo
package myproject.myapp; import javax.xml.bind.*; public class Demo { public static void main(String[] args) throws Exception { JAXBContext jc = JAXBContext.newInstance(RootElement.class); RootElement rootElement = new RootElement(); Marshaller marshaller = jc.createMarshaller(); marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); marshaller.setProperty(Marshaller.JAXB_SCHEMA_LOCATION, "http://www.mysite.com/abc.xsd"); marshaller.marshal(rootElement, System.out); } }
Output
Below is the output from running the demo code.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <RootElement xmlns="http://www.mysite.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.mysite.com/abc.xsd"/>
package-info
This is the package-info
class from your question.
@XmlSchema( namespace = "http://www.mysite.com", elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED ) package myproject.myapp; import javax.xml.bind.annotation.*;
RootElement
Below is a simplified version of your domain model:
package myproject.myapp; import javax.xml.bind.annotation.XmlRootElement; @XmlRootElement(name="RootElement") public class RootElement { }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With