XML для объектов путем демаршаллинга с использованием JAXB [закрыто]

Как насчет этого?

% don’t know why, but apparently your x and y are one value too long?
x = x(1:end-1); y = y(1:end-1); 

% only plot values of 14 or higher
scatter(x(gnd>=14), y(gnd>=14), 5, gnd(gnd>=14);
0
задан Indrajith Ekanayake 11 March 2019 в 15:25
поделиться

1 ответ

В соответствии с документацией XML у вас может быть только один корневой элемент, поэтому вы должны изменить свой 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>
    <deptname name="Delivery">
        <employee>
            <eid>d-001</eid>
            <ename>Kanchana M</ename>
            <age>35</age>
            <deptcode>d3</deptcode>
            <deptname>Delivery</deptname>
            <salary>20000</salary>
        </employee>
    </deptname>
</departments>

Тогда вам понадобится класс Departments для чтения этой части :

@XmlRootElement(name="departments")
public class Departments {
  List<Department> deptname;

  // Getters and setters
}

Тестовый пример будет:

@Test
  public void testXML() {
    try {
      File file = new File("./src/main/resources/employee.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();
    }
  }

Во-вторых, у вас нет атрибутов «Research» или «Sales» или «Delivery», у вас есть имя «attribute» ", который может принимать любое строковое значение, поэтому вам нужно изменить реализацию:

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

  @XmlElement(name = "employee")
  private List<Employee> employee = new ArrayList<>();

  // Getters and setters
}
0
ответ дан Cristian Colorado 11 March 2019 в 15:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: