当前位置: 首页 > 知识库问答 >
问题:

使用jaxb将对象转换为XML时出现异常

谷隐水
2023-03-14

我正在尝试使用JAXB从对象构建XML。

但是我错过了一些东西,因为我得到了一个例外:

javax.xml.bind.MarshalExc0019-具有链接异常:[com.sun.istack.internal.SAXException2:类雇员及其任何超级类在此上下文中都是已知的。javax.xml.bind.JAXBExc0019:类雇员及其任何超级类在此上下文中都是已知的。]

@XmlRootElement(name = "employee")
public class Employee {
    private String name;
    private String employeeId;  

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
    public String getEmployeeId() {
        return employeeId;
    }

    public void setEmployeeId(String employeeId) {
        this.employeeId = employeeId;
    }

}

@XmlRootElement(name = "Data")
public class Data {
    public Data() {
    }

    private List employees;

    @XmlElementWrapper(name = "employeeList")
    @XmlElement(name = "employee")
    public List getEmployees() {
        return employees;
    }

    public void setEmployees(List employees) {
        this.employees = employees;
    }

}


public static void main(String[] args) {
        ArrayList list = new ArrayList();

        Employee e1 = new Employee();
        e1.setName("Name");
        e1.setEmployeeId("1");
        list.add(e1);
        Data data = new Data();
        data.setEmployees(list);

        JAXBContext context;

        ByteArrayOutputStream outStream = new ByteArrayOutputStream();

        try {
            context = JAXBContext.newInstance(Data.class);
            Marshaller m = context.createMarshaller();
            m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
            m.marshal(data, outStream);
        } catch (JAXBException e) {

            e.printStackTrace();
        }

    }

共有1个答案

华凡
2023-03-14

您需要执行以下操作之一,以便您的JAXB(JSR-222)实现意识到您的Data类上的雇员属性包含雇员的实例。

@XmlElementWrapper(name = "employeeList")
@XmlElement(name = "employee", type=Employee.class)
public List getEmployees() {
    return employees;
}

或者

@XmlElementWrapper(name = "employeeList")
@XmlElement(name = "employee")
public List<Employee> getEmployees() {
    return employees;
}
 类似资料:
  • 我有一个类,它有一个包含的列表。在我的应用程序中,我在中设置细节,然后添加到的中,然后使用将转换为。 下面代码行的1个illegalAnnotationExc一定类有两个相同名称的属性trainingList

  • 我想使用XML有效载荷,比如: 另一种有效载荷是: 所以我想为创建一个类,其中包含和一个,我可以在其中放置不同类型的对象,所以我尝试了多种类型的对象一个带有的类,但它不允许我具有相同的名称 在这种情况下我能做什么?提前感谢。

  • 我试图将我下面的xml转换为java对象。 这是我的xml: 我需要在"提供者组织"下获取"name"的值。下面是我Java课。 诊所ocument.java 记录目标。JAVA 病人ole.java 供应商组织。JAVA XMLFileParserSAXUtility.java 我得到的结果是 如果我尝试打印syso(临床文件); 结果是临床文档[recordTarget=null] 请帮帮我!

  • 我有以下XML,需要将其转换为java对象。 我不确定当我使用JAXB转换它时,我的pojo将是什么。 根据我的理解,我创建了以下POJO: 请帮帮我。提前感谢。

  • 我试图使用JAXB将ArrayList转换为xml... ...但它不工作,我得到这个错误: 2012年8月27日10:43:58组织。阿帕奇。卡塔琳娜。果心StandardWrapperValve:Servlet。路径为[/Spring3 LDAP WebService]的上下文中servlet[spring]的service()引发异常[请求处理失败;嵌套异常为javax.xml.bind.J

  • 我怎么能转换java对象到xml?我试图转换一个传入的java对象到xml在Spring集成与转换器豆。有没有其他的方法比编组在Jaxb?喜欢使用@TypeConver。或实现转换器类。