gpt4 book ai didi

java - 使用 simpleframework 构建了一个类 "TimetableData",它可以很好地保存为 xml,但是当我尝试在代码中读取它时,它会抛出 PersistenceException

转载 作者:行者123 更新时间:2023-11-30 03:38:58 25 4
gpt4 key购买 nike

04-21 20:09:17.590: W/System.err(23059): org.simpleframework.xml.core.PersistenceException: Constructor not matched for class com.example.simplexml.DayData

我的主类,我将数据保存在 xml 文件中,这似乎工作正常

Serializer serializer = new Persister();

TimetableData timetableData = new TimetableData();

SubjectData programming = new SubjectData("Programming","ECG 12",1200, 1400);
SubjectData electronics = new SubjectData("Electronics","ECG 13", 1400, 1600);

timetableData.daysData.get(0).subjectsData.add(electronics);
timetableData.daysData.get(1).subjectsData.add(programming);

File result = new File(this.getFilesDir().getPath().toString() + "example.xml");
try {
serializer.write(timetableData, result);
}

此刻,如果我查看 xml 文件,我可以看到它,看起来还不错。但是当我读取它时,它会抛出异常。这就是我阅读它的方式。

TimetableData timetableData;
try {
timetableData = serializr.read(TimetableData.class, source);//this throws the exception

DayData myDay= timetableData.daysData.get(0);
SubjectData mySub = myDay.subjectsData.get(0);
}catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
Toast.makeText(this, e.toString(), Toast.LENGTH_LONG).show();
}

类(class)日数据

public class DayData {

@Attribute(name="dayName")
private String dayName;
@ElementList(name="subjectsData", inline=true)
public List<SubjectData> subjectsData = new ArrayList<SubjectData>();

public DayData(String dayName)
{
this.dayName = dayName;
}

public String getDayName()
{
return dayName;
}
}

我的类 TimetableData 列出了 dayData

    @Root
public class TimetableData {

@ElementList(name="daysData",inline=true)
public List<DayData> daysData;

public TimetableData()
{
daysData = new ArrayList<DayData>();
daysData.add(new DayData("monday"));
daysData.add(new DayData("tuesday"));
daysData.add(new DayData("wednesday"));
daysData.add(new DayData("thursday"));
daysData.add(new DayData("friday"));
}
}

我的类(class)主题数据

public class SubjectData{

@Element(name="classLoc")
private String classLoc;

@Element(name="startTime")
private int startTime;

@Element(name="endTime")
private int endTime;

@Attribute(name="subjectName")
private String subjectName;

public SubjectData() {
super();
}

public SubjectData(String subjectName, String classLoc, int startTime, int endTime) {
this.classLoc = classLoc;
this.subjectName = subjectName;
this.startTime = startTime;
this.endTime = endTime;
}

public String getClassLoc() {
return classLoc;
}

public int getStartTime()
{
return startTime;
}

public int getEndTime()
{
return endTime;
}
public String getDayName() {
return subjectName;
}
}

这是创建的 xmlFile

<timetableData>
<dayData dayName="monday">
<subjectData subjectName="Electronics">
<classLoc>ECG 13</classLoc>
<startTime>1400</startTime>
<endTime>1600</endTime>
</subjectData>
</dayData>
<dayData dayName="tuesday">
<subjectData subjectName="Programming">
<classLoc>ECG 12</classLoc>
<startTime>1200</startTime>
<endTime>1400</endTime>
</subjectData>
</dayData>
<dayData dayName="wednesday"/>
<dayData dayName="thursday"/>
<dayData dayName="friday"/>
</timetableData>

最佳答案

试试这个:

public class DayData {

@Attribute(name="dayName")
private String dayName;
@ElementList(name="subjectsData", inline=true)
public List<SubjectData> subjectsData = new ArrayList<SubjectData>();

public DayData(@Attribute(name="dayName") String dayName)
{
this.dayName = dayName;
}

public String getDayName()
{
return dayName;
}
}

关于java - 使用 simpleframework 构建了一个类 "TimetableData",它可以很好地保存为 xml,但是当我尝试在代码中读取它时,它会抛出 PersistenceException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16135304/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com