I want to have JAXB-annotated classes which would be marshalled/unmarshalled to different XML namespaces.
What I need is something like:
<someRootElement xmlns="urn:my:ns1"
xmlns:a="urn:my:ns2" xmlns:b="urn:my:ns3">
<someElement/>
<a:someElement/>
<b:someElement/>
</someRootElement>
How can it be done?
Can it be done programatically? (without the need for JAXB's .xjb bindings file?)
@XmlRootElement(name="someRootElement", namespace = "urn:my:ns1")
class Test {
@XmlElement(name="someElement", namespace="urn:my:ns1")
String elem1 = "One";
@XmlElement(name="someElement", namespace="urn:my:ns2")
String elem2 = "Two";
@XmlElement(name="someElement", namespace="urn:my:ns3")
String elem3 = "Three";
}
This marshals into the following XML:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<someRootElement xmlns="urn:my:ns1" xmlns:ns2="urn:my:ns2" xmlns:ns3="urn:my:ns3">
<someElement>One</someElement>
<ns2:someElement>Two</ns2:someElement>
<ns3:someElement>Three</ns3:someElement>
</someRootElement>
If you are using JAXB RI and don't like the default ns2 and ns3 namespace prefixes, you need to provide your own NamespacePrefixMapper.
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