gpt4 book ai didi

java - JAXB 解析 Null

转载 作者:行者123 更新时间:2023-12-02 11:21:07 26 4
gpt4 key购买 nike

我正在尝试使用 jaxb 将测试 XML 转换为 POJO。我不再收到任何错误,只是数据为空。我确信添加所有名称以匹配区分大小写并仔细检查标签名称,但不确定为什么它是空的。

JAXBContext jaxbContext = JAXBContext.newInstance(UserContainer.class);
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
UserContainer users = (UserContainer) jaxbUnmarshaller.unmarshal(inputFile);

上面是我用来从 Spring 中的静态资源目录中提取 XML 文件的代码片段。

XML

<?xml version='1.0' encoding='UTF-8'?>
<UserContainer>
<description>Test User Data for Dev Database</description>
<user>
<username>user_1</username>
<password>encrypted_password1</password>
<gender>male</gender>
<phone>4805551111</phone>
<email>user1@gmail.com</email>
</user>
<user>
<username>user_2</username>
<password>encrypted_password2</password>
<gender>female</gender>
<phone>4805551111</phone>
<email>user2@gmail.com</email>
</user>
<user>
<username>user_3</username>
<password>encrypted_password3</password>
<gender>trans</gender>
<phone>1113334454</phone>
<email>user3@gmail.com</email>
</user>
</UserContainer>

UserContainer类

import com.core.entities.User;
import java.util.List;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;

/**
* Allows a container to hold a list of users and map to standard POJO
*/
@XmlRootElement(name="UserContainer")
public class UserContainer {
private List<User> users;

public UserContainer() {}

public UserContainer(List<User> users) {
super();
this.users = users;
}

@XmlElement
public List<User> getUsers() {
return users;
}

public void setUsers(List<User> users) {
this.users = users;
}
}

用户类别

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;

@Entity
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name="user")
public class User {

@Id
@GeneratedValue
private Long id;

@XmlElement
private String username;

@XmlElement
private String password;

@XmlElement
private String gender;

@XmlElement
private String phone;

@XmlElement
private String email;

public User() {}

public User(String username, String password, String gender, String phone, String email) {
super();
this.username = username;
this.password = password;
this.gender = gender;
this.phone = phone;
this.email = email;
}

public String getUserName() {
return username;
}

public void setUserName(String username) {
this.username = username;
}

public String getEncryptedPassword() {
return password;
}

public void setEncryptedPassword(String encryptedPassword) {
this.password = encryptedPassword;
}

public String getGender() {
return gender;
}

public void setGender(String gender) {
this.gender = gender;
}

public String getPhone() {
return phone;
}

public void setPhone(String phone) {
this.phone = phone;
}

public String getEmail() {
return email;
}

public void setEmail(String email) {
this.email = email;
}
}

最佳答案

在 UserContainer.java 文件中进行如下更改:

@XmlRootElement(name="UserContainer")
public class UserContainer {

@XmlElement(name="users")
private List<User> users;

public UserContainer() {}

public UserContainer(List<User> users) {
super();
this.users = users;
}
public List<User> getUsers() {
return users;
}

public void setUsers(List<User> users) {
this.users = users;
}
}

此外,理想情况下,您的 XML 元素必须具有多个值,如下所示:

<?xml version='1.0' encoding='UTF-8'?>
<UserContainer>
<description>Test User Data for Dev Database</description>
<users>
<user>
<username>user_1</username>
<password>encrypted_password1</password>
<gender>male</gender>
<phone>4805551111</phone>
<email>user1@gmail.com</email>
</user>
<user>
<username>user_2</username>
<password>encrypted_password2</password>
<gender>female</gender>
<phone>4805551111</phone>
<email>user2@gmail.com</email>
</user>
<user>
<username>user_3</username>
<password>encrypted_password3</password>
<gender>trans</gender>
<phone>1113334454</phone>
<email>user3@gmail.com</email>
</user>
</users
</UserContainer>

关于java - JAXB 解析 Null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49912820/

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