Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JAXB解组返回空值_Java_Xml_Jaxb - Fatal编程技术网

Java JAXB解组返回空值

Java JAXB解组返回空值,java,xml,jaxb,Java,Xml,Jaxb,我正在使用JAXB将XML文件转换为java对象 我在web上查看了很多示例,但当我将对象解组到java对象时,仍然会在对象中获取空值 我想念什么 File file = new File("BootloaderProtocol.xml"); JAXBContext jaxbContext = JAXBContext.newInstance(Command.class); Unmarshaller jaxbUnmarshaller = jaxbContext.

我正在使用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>

0xFE01
启动引导加载程序
EE120301FE0900

试试这样的方法

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

    static class NestedCommand {
        String COMMAND_ID;

这是正确的xml结构:

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

0xFE01
启动引导加载程序
EE120301FE0900
使用此xml尝试您的代码。在代码中使用xml文件的正确路径


顺便说一句,我已经用这个xml测试了你的代码,它工作得很好。

你的
命令
类没有反映xml结构。缺少元素“COMMAND”。仍然存在问题。我将新节点添加到我的xml中并得到错误:根元素后面的文档中的标记必须格式正确这是我的新xml:0xFE01启动引导加载程序EE120301FE0900 0xFE02启动应用程序EE120302FE0900请参阅此,顺便说一句,您的xml结构错误您不能有多个根元素。