Czy jest możliwe dostosowanie prefiksu przestrzeni nazw, który JAXB używa podczas zestawiania do ciągu?

Na przykład mam prosty schemat, który importuje inny schemat. Drugi schemat (urn: just: attributes, just-attributes.xsd) definiuje tylko grupę atrybutów.

<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema" 
    targetNamespace="http://www.example.org/MySchema"
    xmlns:tns="http://www.example.org/MySchema" 
    elementFormDefault="qualified"
    xmlns:ja="urn:just:attributes">

    <import schemaLocation="just-attributes.xsd" namespace="urn:just:attributes"/>

    <element name="MyElement">
        <complexType>
            <attributeGroup ref="ja:AttributeGroup"/>
        </complexType>
    </element>
</schema>

Korzystam z zadania Ant xjc do generowania klas z tego schematu. Problem, z którym się spotykam, polega na tym, że aplikacja innej firmy, z którą współpracuję, jest specyficzna dla przestrzeni nazw. W tym przypadku potrzebuję wartości String, więc muszę ją serializować. W tym celu używam standardowego kodu.

private static <T> String marshal(T object) throws JAXBException{
    OutputStream outputStream = new ByteArrayOutputStream();
    JAXBContext jaxbContext = JAXBContext.newInstance(object.getClass());
    Marshaller marshaller = jaxbContext.createMarshaller();
    marshaller.marshal(object, outputStream);
    return outputStream.toString();
}

Co daje mi coś w rodzaju

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ns2:MyElement xmlns:ns1="urn:just:attributes" xmlns:ns2="http://www.example.org/MySchema" ns1:attrib1="1234" ns1:attrib2="5678"/>

Mam problem z tym, że ta trzecia strona oczekuje czegoś takiegoxmlns:thirdpartyns="urn:just:attributes", to znaczy, analizują w oparciu oimię nadany przestrzeni nazw. Toma być „Thirdpartyns”, aby ich oprogramowanie działało.

Czy ktoś zna sposób na obejście tego problemu, poza znalezieniem i zastąpieniem wynikowego ciągu? Być może niestandardowa reguła wiązania?

questionAnswers(4)

yourAnswerToTheQuestion