Как насчет этого?
% 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);
В соответствии с документацией 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
}