【问题标题】:Wrong happens unmarshaling错误发生解组
【发布时间】:2018-02-05 09:32:21
【问题描述】:

我不明白为什么要解组。

这是我的课:

@XmlRootElement(name = "privileges")
@XmlAccessorType(XmlAccessType.FIELD)
public  class Privilege {
    @XmlAttribute(name = "number_residents")
    private Integer numberResidents;
    @XmlAttribute(name = "value")
    private String value;
    @XmlElement(name = "privilege")
    private String privilage;

在 getter、setter、equals 和 toString 之下 }

我正在尝试解组。

 File file = new File( "response.xml");
                JAXBContext context = JAXBContext.newInstance(Privilege.class);
                Unmarshaller unmarshaller = context.createUnmarshaller();
                Privilege privilege = (Privilege) unmarshaller.unmarshal(file);
                System.out.println(privilege);

但我总是得到:

Privilege{numberResidents=null, value='null', privilage='Test privilege'}

但是在这样的文件中:

<?xml version="1.0" encoding="UTF-8"?>
<privileges>
    <privilege number_residents="3" value="bb2">Test privilege</privilege>
</privileges>

我需要你的帮助

【问题讨论】:

    标签: java xml jaxb marshalling unmarshalling


    【解决方案1】:

    您的映射不正确。

    试试:

    @XmlRootElement(name = "privileges")
    @XmlAccessorType(XmlAccessType.FIELD)
    public class Privileges {
    
        @XmlElement(name="privilege")
        private Privilege privilege;
    
        //Getters and setters
    
    }
    
    @XmlAccessorType(XmlAccessType.FIELD)
    public class Privilege{
    
        @XmlAttribute(name = "number_residents")
        private Integer numberResidents;
        @XmlAttribute(name = "value")
        private String value;
        @XmlValue
        private String privilege;
    
        //getters and setters
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-02
      • 2020-06-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-10
      相关资源
      最近更新 更多