繁体   English   中英

Android如何使用简单API反序列化包含对象列表的XML

[英]Android How to deserialize xml containing list of objects using Simple api

需要使用简单的API反序列化对对象的xml响应。 当我反序列化对象时,出现异常:org.simpleframework.xml.core.ElementException:元素'Transducer'在类java.lang.Object的第1行没有匹配项

会发现我做错了什么的线索,或者使用复杂对象反序列化内联列表的工作示例。

谢谢。

附件是我的对象的简化示例:

我的xml:

<?xml version="1.0"?>
<Profile xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Transducers>
    <Transducer Value="0" Name="nDate" Unit="" ChineseName="时间" IsVisibility="true" Formatter="yyyyMMddHHmm" MessageLength="12" />
    <Transducer Value="0" Name="EnvirTemp" Unit="℃" ChineseName="环温" IsVisibility="true" Formatter="0.0" MessageLength="4" />
    <Transducer Value="0" Name="EnvirHumid" Unit="%RH" ChineseName="环湿" IsVisibility="true" Formatter="0.0" MessageLength="4" />
  </Transducers>
  <MMX>
    <Transducers>
      <Transducer Value="0" Name="aa" Unit="" ChineseName="a" IsVisibility="true" Formatter="0.0" MessageLength="4" />
      <Transducer Value="0" Name="bb" Unit="" ChineseName="a" IsVisibility="true" Formatter="0.0" MessageLength="4" />
    </Transducers>
  </MMX>
</Profile>

我的对象:

@Root
public class Profile {

    @ElementList(entry="Transducer")
    public List<Transducer> Transducers;

    @ElementList
    public List<List<Transducer>> MMX;
}


@Element
public class Transducer {
    @Attribute
    public double Value;

    @Attribute
    public String Name;

    @Attribute
    public String Unit;

    @Attribute
    public String ChineseName;

    @Attribute
    public boolean IsVisibility;

    @Attribute
    public String Formatter;

    @Attribute
    public String MessageLength;
}

我已经为每个属性添加了private,setter和getter,并通过写入序列化了

<profile>
   <CreateDate>2015-3-25</CreateDate>
   <Id>1</Id>
   <Name>pc4</Name>
   <RecorderId>00000</RecorderId>
   <Transducers class="java.util.ArrayList">
      <Transducer ChineseName="温度" Formatter="0.0" Unit="C" MessageLength="4" Name="Temperature1" IsVisibility="true" Value="0.0"/>
      <Transducer ChineseName="温度2" Formatter="0.0" Unit="C" MessageLength="4" Name="Temperature2" IsVisibility="true" Value="0.0"/>
   </Transducers>
</profile>

我从my.xml中反击,得到了异常

org.simpleframework.xml.core.ElementException:元素'Transducer'在类java.lang.Object中的第1行没有匹配项

您是否尝试过将自己的属性设为私有,并为每个属性创建getter和setter?

暂无
暂无

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

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