Я хочу конвертировать XML в Java с помощью демаршаллинга - PullRequest
1 голос
/ 13 марта 2019

Это мой 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();
        }
    }
}

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

1 Ответ

0 голосов
/ 14 марта 2019

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

Исключение в потоке "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;
    }
}

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

Попробуйте

...