这是我的xml文件,在解组和其余所有值都将被打印时,它返回type和currency的空值。我在这里使用了解组,所有父级和子级POOJ都已指定,最后我的Main方法调用了解组函数1)Vehicle.xml
<?xml version="1.0" encoding="UTF-8"?>
<Vehicle>
<car>
<manufacturer>Maruti</manufacturer>
<cost currency="INR">675000</cost>
<name type="sedan">Ciaz</name>
<fuelType>Petrol</fuelType>
<driverType>Manual</driverType>
</car>
<car>
<manufacturer>Maruti</manufacturer>
<cost currency="INR">575000</cost>
<name type="sedan">Dezire</name>
<fuelType>Petrol</fuelType>
<driverType>Manual</driverType>
</car>
</Vehicle>
各个文件为2)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;
}
@Override
public String toString() {
return "Vehicle[ Car=" + car + "]";
}
}
3)POJO Car.java的子级>
package jaxb; import javax.xml.bind.annotation.XmlAttribute; 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 String currency; @XmlAttribute public String getCurrency() { return currency; } public void setCurrency(String currency) { this.currency = currency; } @XmlAttribute public String getType() { return type; } public void setType(String type) { this.type = type; } private String type; 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 +",currency="+currency+ " , type="+type +"]"; } }
4)为解组而战”
package jaxb; import java.io.File; import java.util.ArrayList; import java.util.List; 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) { e.printStackTrace(); } } }
5)最终输出
Vehicle[ Car=[Car [name=Ciaz, fuelType=Petrol, cost=675000,driverType=Manual,currency=null , type=null], Car [name=Dezire, fuelType=Petrol, cost=575000,driverType=Manual,currency=null , type=null]]]
这是我的xml文件,在解组和其余所有值都已打印时,它会返回类型和货币的空值。我在这里使用过编组,所有的父级和子级POOJ都是...
尝试此:
@XmlAttribute(name = "cost currency")
public String getCurrency() {
return currency;
}
一种常见的方法是添加一个额外的类来处理属性+值。如果您不希望在使用Car
时进行额外的间接访问。您可以向其中添加快捷方式获取器。