JAXB unmarshal返回null值

时间:2015-03-27 07:03:07

标签: java xml jaxb

我正在使用JAXB将XML文件转换为java对象

我在Web上的示例中看了很多但是当我将它解组为java对象时仍然在我的对象中获取空值

我想念的是什么?

File file = new File("BootloaderProtocol.xml");

        JAXBContext jaxbContext = JAXBContext.newInstance(Command.class);

        Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
        Command commanda = (Command) jaxbUnmarshaller.unmarshal(file);
        System.out.println(commanda);

我的班级:

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


String COMMAND_ID;
String COMMAND_NAME;
String COMMAND_CODES;


public String getCOMMAND_ID() {
    return COMMAND_ID;
}

@XmlElement
public void setCOMMAND_ID(String COMMAND_ID) {
    this.COMMAND_ID = COMMAND_ID;
}
public String getCOMMAND_NAME() {
    return COMMAND_NAME;
}

@XmlElement
public void setCOMMAND_NAME(String COMMAND_NAME) {
    this.COMMAND_NAME = COMMAND_NAME;
}

public String getCOMMAND_CODES() {
    return COMMAND_CODES;
}

@XmlElement
public void setCOMMAND_CODES(String COMMAND_CODES) {
    this.COMMAND_CODES = COMMAND_CODES;
}

}

这是我的XML文件:

 <Command>
    <COMMAND>
        <COMMAND_ID>0xFE01</COMMAND_ID>
        <COMMAND_NAME>Start bootloader</COMMAND_NAME>
        <COMMAND_CODES>EE120301FE0900</COMMAND_CODES>
    </COMMAND>


  </Command>

2 个答案:

答案 0 :(得分:2)

这是正确的xml结构:

<Command>
    <COMMAND_ID>0xFE01</COMMAND_ID>
    <COMMAND_NAME>Start bootloader</COMMAND_NAME>
    <COMMAND_CODES>EE120301FE0900</COMMAND_CODES>
</Command>

使用此xml尝试您的代码。在代码中使用xml文件的正确路径。

顺便说一句,我已经用这个xml测试了你的代码,它运行正常。

答案 1 :(得分:0)

尝试这样的事情

public class Command {
    @XmlElement(name="COMMAND")
    public NestedCommand command;

    static class NestedCommand {
        String COMMAND_ID;