繁体   English   中英

解组嵌套的xml数据以提供空值

[英]Unmarshaling the nested xml data giving null values

    <bas:person>

             <req:vehicleinfo>
                <!--Zero or more repetitions:-->
                <bas:item>
                   <sch:modelno>k10</sch:modelno>
                   <sch:type>bs4</sch:type>
                </bas:item>
 <bas:item>
                   <sch:modelno>k12</sch:modelno>
                   <sch:type>bs5</sch:type>
                </bas:item>
             </req:extensionInfo>
    </bas:person>

Assume namespace for bas is some http://xxxxx.person.com
 for req is http://xxxxx.request.com
 for bas http://xxxxx.bas.com
for sch http://xxxxx.sch.com

由于我可能有多个值,因此在这里获取车辆信息,在我的Java对象中,我需要将车辆信息作为数组处理某些项目依赖项。

这是我的java课

 @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

    }

我正在使用以下代码来解组

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

但是我得到关键和价值作为对车辆信息的约束

由于Java没有动态数组,因此JAXB本质上不能与数组一起使用。 而是将VehicleInfo声明为ArrayList。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM