我在使用JAXB和对象列表时遇到问题。JAXB用于从spring 4中开发的REST api中整理/取消整理XML。类结构没有太多xml结构,而我使用的是ArrayList
我有Java业务对象模型如下:
客户端:
@XmlRootElement(name="client")
public class Client {
@XmlElement
public Integer age = Integer.valueOf(0);
public Client() {
super();
}
}
Offer(根元素):
@XmlRootElement
@XmlSeeAlso(Client.class)
public class Offer {
@XmlElement
public ArrayList<Client> clients = new ArrayList<Client>();
public Boolean decission = Boolean.FALSE;
public Offer() {
super();
}
}
和反封送器:
public static Offern unmarshalXMLOffer(String httpMessage) throws Exception{
logger.debug("unmarshal: receved data to unmarshal: " + httpMessage);
JAXBContext jaxbContext = JAXBContext.newInstance(Offer.class, Client.class);
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
StringReader reader = new StringReader(httpMessage);
Offer ca = (Offer)jaxbUnmarshaller.unmarshal(reader);
return ca;
}
问题:
当我发送:
<Offer>
<clients>
<client>
<age>21</age>
</client>
</clients>
<decission>false</decission>
</Offer>
我得到:offer.client.age=0
但如果我将以下内容发送到解组器:
<Offer>
<clients>
<age>21</age>
</clients>
<decission>false</decission>
</Offer>
我得到:offer.client.age=21-正确值。
根据我所掌握的知识和一些JAXB经验,我只做了几件事:
>
为客户端列表创建了自定义包装类
@XmlRootElement@XmlAccessorType(XmlAccessStype.Field)@XmlSeeAllow(Client.class)公共类ClientsXMLWrapper{@XmlElement(name=“clients”)私有列表客户端;
public ClientsXMLWrapper(){
}
public ClientsXMLWrapper(List<Client> clientsList){
clients = clientsList;
}
public List<Client> getClients() {
return clients;
}
public void setClients(List<Client> clients) {
this.clients = clients;
}
}
我进行了不同的JAXB初始化:
到目前为止没有任何帮助。你能帮我解决那个问题吗?科赫.
尝试:
@XmlElementWrapper(name="clients")
@XmlElement(name="client")
public ArrayList<Client> clients = new ArrayList<Client>();
我有以下结构:
我试图使用JAXB将ArrayList转换为xml... ...但它不工作,我得到这个错误: 2012年8月27日10:43:58组织。阿帕奇。卡塔琳娜。果心StandardWrapperValve:Servlet。路径为[/Spring3 LDAP WebService]的上下文中servlet[spring]的service()引发异常[请求处理失败;嵌套异常为javax.xml.bind.J
我正在考虑创建XML文件的Java生成器,然后由另一个Java程序加载这些文件(我不能更改那里的代码)。很明显的答案是JAXB,但是我偶然发现了一个问题。 所有三个XML都将是生成器的有效输出。我已经为fistElement、secondElement等创建了Java类(有很多),但我想不出如何将它们全部添加到一个HeadTag元素下。 我有很多元素,超过500个,所以把它们作为一个字段放在课堂上
我已经生成java类使用从一个xsd,其中根元素是类型的。 jaxb生成的根元素是 当我尝试解组与该xsd对应的xml并强制转换JaxbElement时,它会引发一个强制转换异常: 片段:
主要内容:一个 XML 文档实例,XML 文档形成一种树结构,实例:,XML 文档实例XML 文档形成了一种树结构,它从"根部"开始,然后扩展到"枝叶"。 一个 XML 文档实例 XML 文档使用简单的具有自我描述性的语法: <?xml version="1.0" encoding="UTF-8"?> <note> <to>Tove</to> <from>Jani</from> <heading>Reminder</heading> <body>Don't forget me th