2015-05-17 9 views
2

Пожалуйста, скажите, почему возникает Исключение? Я получаю исключение, когда пытаюсь де-сериализовать xml для java-объекта.XStream. UnknownFieldException

com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter $ UnknownFieldException: Нет такого поля addressservice.Region.region.

---- Debugging information ---- 
field    : region 
class    : addressservice.Region 
required-type  : addressservice.Region 
converter-type  : com.thoughtworks.xstream.converters.reflection.ReflectionConverter 
path    : /AddressServiceConfig/regions/region 
line number   : 3 
class[1]   : addressservice.AddressServiceConfig 
version    : 1.4.7 

Мой XML:

<addressServiceConfig> 
    <regions> 
     <region> 
      <regionName>region1</regionName> 
      <provinces> 
       <province> 
        <name>province11</name> 
        <code>11</code> 
       </province> 
       <province> 
        <name>province12</name> 
        <code>12</code> 
       </province> 

      </provinces> 
     </region> 
     <region> 
      <regionName>region2</regionName> 
      <provinces> 
       <province> 
        <name>province21</name> 
        <code>21</code> 
       </province> 
       <province> 
        <name>province22</name> 
        <code>22</code> 
       </province> 
      </provinces> 
     </region> 
    </regions> 

    <pathToCodeposFiles></pathToCodeposFiles> 
</addressServiceConfig> 

Мои классы

@XStreamAlias("addressServiceConfig") 
public class AddressServiceConfig 
{ 
    private String pathToCodeposFiles; 
    @XStreamImplicit(itemFieldName = "region") 
    private List<Region> regions; 
} 

@XStreamAlias("region") 
public class Region 
{ 
    private String regionName; 
    @XStreamImplicit(itemFieldName = "province") 
    private List<Province> provinces; 
} 

@XStreamAlias("province") 
public class Province 
{ 
    private int code; 

    private String name; 
} 

Пожалуйста, помогите.

ответ

1

Ваше определение xml не содержит неявных коллекций regions и provinces, но явных.

Вы должны удалить @XStreamImplicit(itemFieldName = "region") и @XStreamImplicit(itemFieldName = "province") из своих определений классов.

Явная regions коллекция:

<addressServiceConfig> 
    <regions> 
    <region> 
    ... 
    </region> 
    <region> 
    ... 
    </region> 
    </regions> 
</addressServiceConfig> 

неявной regions коллекция:

<addressServiceConfig> 
    <region> 
    ... 
    </region> 
    <region> 
    ... 
    </region> 
</addressServiceConfig> 
Смежные вопросы