在java中解组时出错

时间:2014-03-17 10:07:37

标签: java xml jaxb unmarshalling

我有一个已经包含的xml文件,

** LT; ?xml version =“1.0”encoding =“UTF-8”standalone =“yes”?>

< customer id =“100”>

<年龄> 22℃; /年龄>

<名称>&纳温LT; /名称> < /客户> **

我的POJO课程是

公共类客户{

String name;
int age;
int id;

public String getName() {
    return name;
}

public int getAge() {
    return age;
}

public int getId() {
    return id;
}

}

我试图通过使用JAXB as

解组
   File file = new File("sample.txt");
   JAXBContext jaxbContext = JAXBContext.newInstance(Customer.class);
   Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
   Customer customer = (Customer) jaxbUnmarshaller.unmarshal(file);
   System.out.println(customer);

但是我得到了一个例外

意外元素(uri:“”,本地:“客户”)。预期的元素是(无)

请帮帮我。

2 个答案:

答案 0 :(得分:1)

目前,您的类中没有足够的信息让JAXB知道要根据根元素实例化哪个类。您可以执行以下操作之一:

  1. @XmlRootElement类上添加Customer,以明确将Customer类映射到customer根元素。
  2. 使用带unmarshal参数的Class方法:

    JAXBElement<Customer> je = unmarshaller.unmarshal(source, Customer.class);
    Customer customer = je.getValue();
    
  3. 了解更多信息

答案 1 :(得分:0)

可能有2个问题 1 - 更正xml的格式,我可以在标签中看到空格,而不是使用&lt;使用&GT;最好在xml以下使用

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<customer id="100">
    <age>22</age>
    <name>naveen</name> 
</customer>

2 - 并注释您的Jaxb类 - 使用下面的

@XmlRootElement
public class Customer {
@XmlElement
String name;
@XmlElement
int age;
@XmlAttribute
int id;

public String getName() {
    return name;
}

public int getAge() {
    return age;
}

public int getId() {
    return id;
}
}