Когда я выполнял маршалинг объекта, я получил это исключение: javax.xml.bind.JAXBException: подписка класса, ни один из его суперклассов не известен этому контексту.
Я знаю, что есть решения @XmlSeeAlso и модификации классов jaxb, но когда мы генерируем классы JAXB из файла XSD / WSDL, мы не можем их изменить. Таким образом, эти решения не будут работать для этого сценария.
public static String getStringFromSubscription(Subscription subscription) throws MbException
{
Marshaller marshaller;
StringWriter stringWriter = new StringWriter();
try
{
marshaller = JAXBContext.newInstance(com.myhealth.com.ObjectFactory.class
.getPackage().getName()).createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FRAGMENT, true);
marshaller.setProperty("com.sun.xml.bind.xmlDeclaration", Boolean.FALSE);
marshaller.marshal(subscription, stringWriter);
}
catch (Exception e)
{
throw new MbException(e);
}
return stringWriter;
}