JAXB unmarshal, возвращающий нулевые значения

1

Я использую JAXB для преобразования XML файла в Java-объект

Я много смотрел в примерах в Интернете, но все же получаю нулевые значения в моем объекте, когда я отменяю его на 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>
  • 0
    Ваш класс Command не отражает структуру XML. Элемент "КОМАНДА" отсутствует.
Теги:
jaxb

2 ответа

2
Лучший ответ

Это правильная структура xml:

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

Попробуйте свой код с этим xml. Используйте правильный путь к файлу xml в коде.

Кстати, я проверил ваш код с этим xml, и он отлично работает.

  • 0
    спасибо за его работу сейчас!
  • 0
    все еще есть проблемы. я добавил новый узел в свой xml и получил ошибку: разметка в документе, следующем за корневым элементом, должна быть правильно сформирована. Это мой новый xml: <Command> <COMMAND_ID> 0xFE01 </ COMMAND_ID> <COMMAND_NAME> Start bootloader </ COMMAND_NAME> <COMMAND_CODES> EE120301FE0900 </ COMMAND_CODES> </ Command> <Command> <COMMAND_ID> 0xFE02 </ COMMAND_NAME> <COMMAND_NAME> Запустить приложение </ COMMAND_NAME> <COMMAND_CODES> EE120302FE0900 </ COMMAND_C>
Показать ещё 3 комментария
0

попробуй что-нибудь вроде этого

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

    static class NestedCommand {
        String COMMAND_ID;

Ещё вопросы

Сообщество Overcoder
Наверх
Меню