Это мой XML, и я хочу его демаршалировать.

<?xml version="1.0" encoding="UTF-8"?>
<departments>
    <deptname name="Research">
        <employee>
            <eid>r-001</eid>
            <ename>Dinesh R</ename>
            <age>35</age>
            <deptcode>d1</deptcode>
            <deptname>Research</deptname>
            <salary>20000</salary>
        </employee>
    </deptname>
    <deptname name="Sales">
        <employee>
            <eid>s-001</eid>
            <ename>Kanmani S</ename>
            <age>35</age>
            <deptcode>d2</deptcode>
            <deptname>Sales</deptname>
            <salary>30000</salary>
        </employee>
    </deptname>
</departments>

Department.java

public class Department 
{ 
    @XmlAttribute(name = "deptname")
    private String name;

    @XmlElement(name = "employee") 
    private List<Employee> employee = new ArrayList<>();//getter and setter//
}

Это мой Departments.java

public class Departments {

    List<Department> deptname;

    public List<Department> getDeptname() {
        return deptname;
    }

    public void setDeptname(List<Department> deptname) {
        this.deptname = deptname;
    }
}

Это мой Unmarshalling.java

public class Unmarshalling {
    public void testXML() {
        try {
            File file = new File(
                "/home/scrunch/work/workspace/sts/default/EmployeeUnmarshall/src/main/java/OutputXml.xml");
            JAXBContext jaxbContext = JAXBContext.newInstance(Departments.class);
            Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
            Departments departments = (Departments) jaxbUnmarshaller.unmarshal(file);
            System.out.println(departments);
        } catch (JAXBException e) {
            e.printStackTrace();
        }
    }
}

Я пробовал демаршалировать, но не получил объект java. У меня формат xml. Я занимаюсь отдыхом. Для этого мне нужно демаршалировать XML-файл, чтобы я мог получить объекты Java. Не могли бы вы обновить меня, сэр.

1
Latha 13 Мар 2019 в 17:02

1 ответ

Лучший ответ

Я попробовал ваш код и получил эту ошибку:

Исключение в потоке "main" javax.xml.bind.UnmarshalException: неожиданный элемент (uri: "", local: "департаменты"). Ожидаемые элементы (нет)

Исправлено, объявив Departments следующим образом:

@XmlRootElement(name="departments")
public class Departments {

    List<Department> deptname;

    public List<Department> getDeptname() {
        return deptname;
    }

    public void setDeptname(List<Department> deptname) {
        this.deptname = deptname;
    }
}

См. этот вопрос

Попробуй

0
Bentaye 14 Мар 2019 в 10:38