gpt4 book ai didi

java - 编码错误 : javax. xml.bind.JAXBException:此上下文已知类或其任何父类(super class)

转载 作者:行者123 更新时间:2023-12-02 10:02:15 29 4
gpt4 key购买 nike

当我编码一个对象时,我得到了这个异常:javax.xml.bind.JAXBException:类订阅或其任何父类(super class)对此上下文都是已知的。

我知道 @XmlSeeAlso 和修改 jaxb 类有解决方案,但是当我们从 XSD/WSDL 文件生成 JAXB 类时,我们无法更改它们。因此,这些解决方案不适用于这种情况。

  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;
}

最佳答案

据我所知,有 3 种解决方案。

ObjectFactory 类是在从 xsd/wsdl 生成 jaxb 时自动创建的。

  1. 使用ObjectFactory方法创建必要的对象
marshaller.marshal(new com.myhealth.com.ObjectFactory().createSubscription(subscription), stringWriter);
  • 创建编码器时直接使用类
  • JAXBContext.newInstance(Subscription.class).createMarshaller();
  • 这里已经使用了另一种方法。我的意思是通过 ObjectFactory 使用包名称
  • JAXBContext.newInstance(com.myhealth.com.ObjectFactory.class
    .getPackage().getName()).createMarshaller();

    关于java - 编码错误 : javax. xml.bind.JAXBException:此上下文已知类或其任何父类(super class),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55541436/

    29 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com