Ошибка при демаршаллинге в Java

1

У меня есть файл xml, который уже содержит,

** <? xml version = "1.0" encoding = "UTF-8" standalone = "yes"?>

<идентификатор клиента = "100">

<возраст> 22 </age>

<имя> naveen </name> </customer> **

для которого мой класс POJO

public class Customer {

String name;
int age;
int id;

public String getName() {
    return name;
}

public int getAge() {
    return age;
}

public int getId() {
    return id;
}

}

Я пытаюсь развязать это, используя JAXB,

   File file = new File("sample.txt");
   JAXBContext jaxbContext = JAXBContext.newInstance(Customer.class);
   Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
   Customer customer = (Customer) jaxbUnmarshaller.unmarshal(file);
   System.out.println(customer);

Но я получаю исключение, поскольку

неожиданный элемент (uri: "", local: "customer"). Ожидаемые элементы (нет)

Пожалуйста, помогите мне.

Теги:
jaxb
unmarshalling

2 ответа

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

В настоящее время в вашем классе недостаточно информации для JAXB, чтобы узнать, какой класс следует создавать на основе корневого элемента. Вы можете выполнить одно из следующих действий:

  1. Добавьте @XmlRootElement в свой класс Customer чтобы явно сопоставить класс Customer с корневым элементом customer.
  2. Используйте метод unmarshal который принимает параметр Class:

    JAXBElement<Customer> je = unmarshaller.unmarshal(source, Customer.class);
    Customer customer = je.getValue();
    

Чтобы получить больше информации

0

Может быть 2 вопроса
1 - Исправьте формат xml, я мог видеть пробелы в теге, например, вместо использования <use> лучше использовать ниже xml

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<customer id="100">
    <age>22</age>
    <name>naveen</name> 
</customer>

2 - и аннотируйте свой класс Jaxb - используйте ниже

@XmlRootElement
public class Customer {
@XmlElement
String name;
@XmlElement
int age;
@XmlAttribute
int id;

public String getName() {
    return name;
}

public int getAge() {
    return age;
}

public int getId() {
    return id;
}
}

Ещё вопросы

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