我正在反序列化一个Xml文件:
<?xml version="1.0" encoding="utf-8"?>
<UserList xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<UserLists>
<user>
<username>Salesman1</username>
<password>123</password>
<salesmanId>4</salesmanId>
</user>
</UserLists>
</UserList>
用这一行抛出异常:
org.simpleframework.xml.core.ValueRequiredException: Unable to satisfy @org.simpleframework.xml.ElementList(data=false, empty=true, entry=user, inline=true, name=, required=true, type=void) on field 'user' public java.util.List azdad.pos.android.UserList.user for class azdad.pos.android.UserList at line 2
我的实体类是:
import java.util.List;
import org.simpleframework.xml.Element;
import org.simpleframework.xml.ElementList;
import org.simpleframework.xml.Path;
import org.simpleframework.xml.Root;
@Root(name="UserList",strict=false)
public class UserList{
@ElementList(entry="user", inline=true)
public List<UserInfo> user;
public List<UserInfo> getUsrs(){
return user;
}
}
我用过
严格
忽略标签根据此链接:
How to ignore unused XML elements while deserializing a document?
但它不起作用,是否有人知道如何忽略deserializng的 标记
答案 0 :(得分:2)
我相信你要忽略的是<UserLists>
标签对吗?
您的问题来自使用inline
属性(请参阅Simple XML inlining),您需要使用:
@Root(name="UserList")
public class UserList{
@ElementList(name="UserLists", entry="user")
public List<UserInfo> user;
public List<UserInfo> getUsers(){
return user;
}
}
那时不应该需要strict
属性。
注意:我更正了getUsers()
中的语法错误:因为Simple使用反射,这可能很重要。