Java 对嵌套的xml数据进行解组,给出空值
车辆信息Java 对嵌套的xml数据进行解组,给出空值,java,soap,jaxb,jax-ws-customization,Java,Soap,Jaxb,Jax Ws Customization,车辆信息 @XmlRootElement(name="person") @XmlAccessorType(XmlAccessType.FIELD) public class Person implements Serializable{ @XmlElement(name="vehicleinfo",namespace="http://xxxxx.request.com") private VehicleInfo[] vehicleinfo; //
@XmlRootElement(name="person")
@XmlAccessorType(XmlAccessType.FIELD)
public class Person implements Serializable{
@XmlElement(name="vehicleinfo",namespace="http://xxxxx.request.com")
private VehicleInfo[] vehicleinfo;
// getter & setter
}
我使用以下代码来解组
@XmlAccessorType(XmlAccessType.FIELD)
public class VehicleInfo{
@XmlAttribute(name="modelno",namespace="http://xxxxx.sch.com")
private String key;
@XmlAttribute(name="type",namespace="http://xxxxx.sch.com")
private String value;
//getter and setter
}
但是,我将key和value作为车辆信息的nul来获取,JAXB本质上不支持数组,因为Java没有动态数组。而是将您的VehicleInfo声明为ArrayList。您是否在VehicleInfo和Person中定义了getter和setter?是!!!我在问题中跳过了上面的代码,如果我将vehicle info更改为array,是否可以正常工作list@valdim或者我们需要做一些改变吗?实际上,车辆信息是一个项目的集合。项具有modelNo和type。所以你需要另一个类项目。
@XmlAccessorType(XmlAccessType.FIELD)
public class VehicleInfo{
@XmlAttribute(name="modelno",namespace="http://xxxxx.sch.com")
private String key;
@XmlAttribute(name="type",namespace="http://xxxxx.sch.com")
private String value;
//getter and setter
}
SOAPMessage message = MessageFactory.newInstance().createMessage(null,
new ByteArrayInputStream(xmlInput.getBytes()));
JAXBContext jaxbContext = JAXBContext.newInstance(Person.class);
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
Person person= (Person) jaxbUnmarshaller.unmarshal(message.getSOAPBody().extractContentAsDocument());