我有一个已经包含的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:“”,本地:“客户”)。预期的元素是(无)
请帮帮我。
答案 0 :(得分:1)
目前,您的类中没有足够的信息让JAXB知道要根据根元素实例化哪个类。您可以执行以下操作之一:
@XmlRootElement
类上添加Customer
,以明确将Customer
类映射到customer
根元素。使用带unmarshal
参数的Class
方法:
JAXBElement<Customer> je = unmarshaller.unmarshal(source, Customer.class);
Customer customer = je.getValue();
了解更多信息
答案 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;
}
}