HI Я хочу получить значение вложенного xml, используя немаршалинг с использованием зависимости maven, но окончательный вывод возвращает мне нулевые значения . Я использовал 3 пакета в проекте maven, а vehicle.xml содержитзначения автомобиля после получения значений, которые я должен вставить в базу данных доступа
МОЙ XML-файл ---> Vehicle.xml
<?xml version="1.0" encoding="UTF-8"?>
<Vehicle>
<Car>
<manufacturer>Maruti</manufacturer>
<cost>675000</cost>
<name>Ciaz</name>
<fueType>Petrol</fueType>
<driverTye>Manual</driverTye>
</Car>
<Car>
<manufacturer>Maruti</manufacturer>
<cost>575000</cost>
<name>Dezire</name>
<fueType>Petrol</fueType>
<driverTye>Manual</driverTye>
</Car>
</Vehicle>
POJO CLASS
Vehicle.java
package jaxb;
import java.util.List;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement(name="Vehicle")
public class Vehicle {
@XmlElement
private List<Car> car;
public List<Car> getCar() {
return car;
}
/*
* public Vehicle(List<Car> car) { super(); this.car = car; }
*/
@Override
public String toString() {
return "Vehicle[ Car="+car+"]";
}
}
Car.java (это дочерний POJO)
package jaxb;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement(name="Car")
public class Car {
private String manufacturer;
private String name;
private String driverType;
private String fuelType;
private int cost;
@XmlElement
public String getManufacturer() {
return manufacturer;
}
public void setManufacturer(String manufacturer) {
this.manufacturer = manufacturer;
}
@XmlElement
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@XmlElement
public String getDriverType() {
return driverType;
}
public void setDriverType(String driverType) {
this.driverType = driverType;
}
@XmlElement
public String getFuelType() {
return fuelType;
}
public void setFuelType(String fuelType) {
this.fuelType = fuelType;
}
@XmlElement
public int getCost() {
return cost;
}
public void setCost(int cost) {
this.cost = cost;
}
@Override
public String toString() {
return "Car [name=" + name + ", fuelType=" + fuelType + ", cost=" + cost+",driverType="+driverType +"]";
}
VehicleJxb.java
Этот файл содержит реализацию нашего метода демаршаллинга
package jaxb;
import java.io.File;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Unmarshaller;
public class VehicleJxb {
public void unmarhalling() {
try {
JAXBContext jaxbContext = JAXBContext.newInstance(Vehicle.class);
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
Vehicle vehicle = (Vehicle) jaxbUnmarshaller.unmarshal(new File("src\\main\\java\\Data\\Vehicle.xml"));
System.out.println(vehicle);
} catch (JAXBException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
App.java
package com.project.XMLDB;
import jaxb.*;
public class App
{
public static void main( String[] args )
{
VehicleJxb obj= new VehicleJxb();
obj.unmarhalling();
}
}
Мой вывод идет
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by com.sun.xml.bind.v2.runtime.reflect.opt.Injector (file:/C:/Users/Shivam%20Sharma/.m2/repository/com/sun/xml/bind/jaxb-impl/2.2.11/jaxb-impl-2.2.11.jar) to method java.lang.ClassLoader.defineClass(java.lang.String,byte[],int,int)
WARNING: Please consider reporting this to the maintainers of com.sun.xml.bind.v2.runtime.reflect.opt.Injector
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
Vehicle[ Car=null]
Я хочу получить значения, так как окончательный результат возвращается ноль