使用xstream进行XML解析

使用xstream进行XML解析,xml,xstream,Xml,Xstream,我将以下XML结构解析为下面提到的类: <?xml version="1.0" encoding="utf-16"?> <OrderDiscount xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <Status>Failed</Status> <Errors>Error : C

我将以下XML结构解析为下面提到的类:

<?xml version="1.0" encoding="utf-16"?>
<OrderDiscount xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Status>Failed</Status>
  <Errors>Error : Customer 00000037 not found : Product 51 D0003 not found</Errors>
  <DeliveryID>00000037</DeliveryID>
  <CarriageAmount>0</CarriageAmount>
  <TotalDiscount>0</TotalDiscount>
  <OrderLines>
    <Warehouse>51</Warehouse>
    <Product>D0003</Product>
    <ContractPrice>N</ContractPrice>
    <UnitOfSale>20</UnitOfSale>
    <Ordered>1</Ordered>
    <ListPrice>10</ListPrice>
    <NetPrice>10</NetPrice>
    <NewNetPrice>0</NewNetPrice>
  </OrderLines>
</OrderDiscount>
我使用以下代码对其进行解析:

    OrderDiscount orderDiscount = null;

    final XStream xstream = new XStream(new StaxDriver());
    xstream.processAnnotations(OrderDiscount.class);
    xstream.processAnnotations(OrderLines.class);

    orderDiscount = (OrderDiscount) xstream.fromXML(response);
我得到以下错误:

Target exception: com.thoughtworks.xstream.converters.ConversionException: Warehouse : Warehouse : Warehouse : Warehouse
---- Debugging information ----
message             : Warehouse : Warehouse
cause-exception     : com.thoughtworks.xstream.mapper.CannotResolveClassException
cause-message       : Warehouse : Warehouse
class               : uk.co.portaltech.quicklive.thirdparty.datel.OrderDiscount
required-type       : java.util.ArrayList
path                : /OrderDiscount/OrderLines/Warehouse
line number         : 1
-------------------------------
有人能帮我纠正Java对象的结构来解决这个问题吗?

您可以使用 自定义处理程序,以更通用的方式解析ur XML,以便它可以根据注释解析所有pojo类

    OrderDiscount orderDiscount = null;

    final XStream xstream = new XStream(new StaxDriver());
    xstream.processAnnotations(OrderDiscount.class);
    xstream.processAnnotations(OrderLines.class);

    orderDiscount = (OrderDiscount) xstream.fromXML(response);
Target exception: com.thoughtworks.xstream.converters.ConversionException: Warehouse : Warehouse : Warehouse : Warehouse
---- Debugging information ----
message             : Warehouse : Warehouse
cause-exception     : com.thoughtworks.xstream.mapper.CannotResolveClassException
cause-message       : Warehouse : Warehouse
class               : uk.co.portaltech.quicklive.thirdparty.datel.OrderDiscount
required-type       : java.util.ArrayList
path                : /OrderDiscount/OrderLines/Warehouse
line number         : 1
-------------------------------