【发布时间】:2020-12-15 11:53:59
【问题描述】:
我有以下 XML 文件以 Java 上传到 unmarshall:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<MyValues>
<Type Value="ABC">
<CustomerName>Sample</CustomerName>
<EmailAddress>sample@abcd.com</EmailAddress>
<PhoneNumber>1234567890</PhoneNumber>
<HardwareKey>abc-def-123-456</HardwareKey>
</Type>
</MyValues>
我想将此文件的值上传到我的 Spring 应用程序中的数据库。要解组的 Java 代码是:
String transformedFileName = TRANSFORMED_FILE_DIRECTORY+"/"+fileName;
JAXBContext context = JAXBContext.newInstance(CustomerDetails.class);
Unmarshaller um = context.createUnmarshaller();
customerDetails = (CustomerDetails) um.unmarshal(new InputStreamReader(
new FileInputStream(transformedFileName), StandardCharsets.UTF_8));
System.out.println(customerDetails);
CustomerDetails.java 是:
@Entity
@Table(name="customerDetails")
@EntityListeners(AuditingEntityListener.class)
public class CustomerDetails {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Long id;
private String type;
private String hardwareKey;
private String emailAddress;
private Long phoneNumber;
private String customerName;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getHardwareKey() {
return hardwareKey;
}
public void setHardwareKey(String hardwareKey) {
this.hardwareKey = hardwareKey;
}
public String getEmailAddress() {
return emailAddress;
}
public void setEmailAddress(String emailAddress) {
this.emailAddress = emailAddress;
}
public Long getPhoneNumber() {
return phoneNumber;
}
public void setPhoneNumber(Long phoneNumber) {
this.phoneNumber = phoneNumber;
}
public String getCustomerName() {
return customerName;
}
public void setCustomerName(String customerName) {
this.customerName = customerName;
}
}
这是我在运行时遇到的错误:
javax.xml.bind.UnmarshalException: unexpected element (uri:"", local:"MyValues"). Expected elements are (none)
我无法更改文件值和结构,必须将文件值保存在数据库中。如何克服此错误以及如何保存值?我做错了什么?
【问题讨论】:
标签: java spring xml-parsing jaxb unmarshalling