Преобразование файла XML в Java LinkedHashSet - PullRequest
0 голосов
/ 09 февраля 2020

У меня есть файл XML, и мне нужно проанализировать его содержимое до LinkedHashSet, в котором хранятся объекты моего собственного класса. Например, класс коллекции:

public class person{ 
    private long id; 
    private String name; 
    private int age; 
} 

И так XML хотел бы быть таким:

<root> 
    <person1> 
        <id>1</id> 
        <name>Bob</name> 
        <age>25</age> 
    </person1> 
    <person2> 
        <id>2</id> 
        <name>Alex</name> 
        <age>15</age> 
    </person2> 
</root> 

и так далее. Я нашел кое-что с JAXB, но всегда есть примеры только для одного объекта, а не для всей коллекции. Итак, мой вопрос, как конвертировать XML в LinkedHashSet

1 Ответ

0 голосов
/ 09 февраля 2020

Вы можете попробовать что-то вроде этого (к вашему сведению, я немного изменил xml)

<employee>
<person>
    <id>1</id>
    <name>Bob</name>
    <age>25</age>
</person>
<person>
    <id>2</id>
    <name>Alex</name>
    <age>15</age>
</person>
</employee>

Класс личности

public class Person {

private long id;
private String name;
private int age;

public long getId() {
    return id;
}

public void setId(long id) {
    this.id = id;
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public int getAge() {
    return age;
}

public void setAge(int age) {
    this.age = age;
}

Класс работника

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import java.util.LinkedHashSet;

@XmlRootElement(name = "employee")
@XmlAccessorType(XmlAccessType.FIELD)
public class Employee {

  @XmlElement(name = "person")
  private LinkedHashSet<Person> listOfPerson;

  public LinkedHashSet<Person> getListOfPerson() {
    return listOfPerson;
  }
}

И, наконец, мы можем получить эти данные (getEmployee (). GetListOfPerson () делает с тем, что вы хотите сделать)))

public Employee getEmployee() throws JAXBException {
    File file = new File("data.xml");
    JAXBContext jaxbContext = JAXBContext.newInstance(Employee.class);

    Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
    Employee employee = (Employee) jaxbUnmarshaller.unmarshal(file);

    return employee;
}
...