目前我有两节课。 procedure proc1;
begin
// statements that can be executed in a few milliseconds or much slower
end;
procedure mainproc;
begin
// statements part1
proc1;
// statements part2
end;
和Customer
,每个CustomerItem
可以包含多个Customer
:
CustomerItems
通过REST,我们可以得到一个@XmlRootElement(name = "Customer")
@XmlAccessorType(XmlAccessType.FIELD)
public class Customer implements Serializable {
private final String customerNumber;
private final String customerName;
@XmlElementWrapper(name = "customerItems")
@XmlElement(name = "CustomerItem")
private List<CustomerItem> customerItems;
...
,这将导致XML看起来像这样:
List<Customer>
现在,如果我要解组响应,我会收到错误:
javax.xml.bind.UnmarshalException:意外元素(uri:“”, 本地: “集合”)。预期的要素是 &LT; {}客户&GT;,&LT; {} CustomerItem&GT;
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<collection>
<Customer>
// normal values
<customerItems>
<customerItem>
// normal values
</customerItem>
</customerItems>
</Customer>
<Customer>
...
</Customer>
<Customer>
...
</Customer>
</collection>
现在我知道它为什么不起作用,显然Jaxb希望Customer成为根元素,但现在找到一个集合(当List返回时似乎是默认值?)。
解决方法是创建一个新的Customers类,其中包含一个customer列表并将其作为根元素,但实际上我不想要一个新类。
必须有办法告诉jaxb我有一个我想要获得的类的列表,他应该查看集合标记或类似内容吗?!
答案 0 :(得分:1)
我在这里看到两种方式。
1)使用@XmlRootElement(name = "collection")
创建特殊的包装类,并将其设置为unmarshaller。
2)另一种方法 - 使用简单的xml
解析器实现将输入SAX
拆分为较小的一个,然后使用JAXB
分别解析每个片段(请参阅:Split 1GB Xml file using Java)。
我不认为您可以简单地告诉我JAXB
:将此xml
解析为XXX
类型的元素集。