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());