2015-03-27 4 views
1

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

Я просмотрел много в примерах в Интернете, но до сих пор получить нулевые значения в моем объекте, когда я маршализацию его в объект 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. Элемент «КОМАНДА» отсутствует. – Seelenvirtuose

ответ

2

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

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

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

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

+0

поблагодарить свою работу сейчас! – Natile

+0

все еще есть проблемы. я добавил новый узел в мой XML и получаю ошибку: Разметка в документе после корневого элемента должна быть хорошо сформированным это мой новый XML: 0xFE01 Запустить загрузчик EE120301FE0900 0xFE02 Запустить приложение EE120302FE0900 Natile

+0

см это, http://howtodoinjava.com/2013/07/30/JAXB-exmaple-сортировочный и-демаршаллинг-лист или-множество-объекты/ – Touchstone

0

попробовать что-то вроде этого

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

    static class NestedCommand { 
     String COMMAND_ID; 
Смежные вопросы