Simple이라는 프레임 워크를 사용하고 있습니다.이 프레임 워크는 직렬화 및 deser에 매우 유용합니다. XML 콘텐츠. 그러나 XML 파일을 객체에 직렬화 할 수 없습니다. 출력 객체는 정보로 채워야하지만 Null Pointer Exception을 얻습니다. 내가 고해상도/XML /라는 startingdata.xml에서 파일이간단한 프레임 워크를 사용한 XML 직렬화
InputStream is = getResources().openRawResource(R.xml.startingdata);
Serializer ser = new Persister();
Data data = ser.read(Data.class, is);
:
여기 내 자바 코드입니다. 데이터를 "데이터"개체로 열거하려고합니다. 그러나 데이터 객체와 관련된 NullPointerException이 발생합니다.
<data>
<categories>
<category>Inbox</category>
<category>Private</category>
<category>Work</category>
<category>Business</category>
</categories>
<todos>
<todo>
<id>1</id>
<text>Explore the app!</text>
</todo>
<todo>
<id>2</id>
<text>Add more todos!</text>
<date>2013-05-09 12:21:55 CET</date>
</todo>
</todos>
내가 XML 모델 클래스가 확인 생각, 거기에 아무 문제가 그들과 함께,하지만 당신이 그들을 볼 필요하면 내가 그들을 게시 할 수 있습니다 : 여기
는 startingdata.xml입니다 .Data.java
@Root
public class Data {
@ElementList
public List<Category> categories;
@ElementList
public List<ToDo> todos;
}
@Element(name="todo")
public class ToDo {
@Element(required=true)
public String id;
@Element(required=true)
public String text;
@Element(required=false)
public Date date;
}
@Element(name="category")
public class Category {
@Element(required=true)
public String text;
}
내가 생성 된 데이터 객체가 생성 된 경우 확인하기 위해 토스트를 사용하고 있습니다 :
여기에 모델 클래스입니다.
05-09 14:13:38.407: E/AndroidRuntime(9246): FATAL EXCEPTION: main
05-09 14:13:38.407: E/AndroidRuntime(9246): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.todo.wanttodo/com.todo.wanttodo.MainActivity}: java.lang.NullPointerException
05-09 14:13:38.407: E/AndroidRuntime(9246): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180)
05-09 14:13:38.407: E/AndroidRuntime(9246): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
05-09 14:13:38.407: E/AndroidRuntime(9246): at android.app.ActivityThread.access$600(ActivityThread.java:141)
05-09 14:13:38.407: E/AndroidRuntime(9246): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
05-09 14:13:38.407: E/AndroidRuntime(9246): at android.os.Handler.dispatchMessage(Handler.java:99)
05-09 14:13:38.407: E/AndroidRuntime(9246): at android.os.Looper.loop(Looper.java:137)
05-09 14:13:38.407: E/AndroidRuntime(9246): at android.app.ActivityThread.main(ActivityThread.java:5041)
05-09 14:13:38.407: E/AndroidRuntime(9246): at java.lang.reflect.Method.invokeNative(Native Method)
05-09 14:13:38.407: E/AndroidRuntime(9246): at java.lang.reflect.Method.invoke(Method.java:511)
05-09 14:13:38.407: E/AndroidRuntime(9246): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
05-09 14:13:38.407: E/AndroidRuntime(9246): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
05-09 14:13:38.407: E/AndroidRuntime(9246): at dalvik.system.NativeStart.main(Native Method)
05-09 14:13:38.407: E/AndroidRuntime(9246): Caused by: java.lang.NullPointerException
05-09 14:13:38.407: E/AndroidRuntime(9246): at com.todo.wanttodo.MainActivity.onCreate(MainActivity.java:77)
05-09 14:13:38.407: E/AndroidRuntime(9246): at android.app.Activity.performCreate(Activity.java:5104)
05-09 14:13:38.407: E/AndroidRuntime(9246): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
05-09 14:13:38.407: E/AndroidRuntime(9246): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)
05-09 14:13:38.407: E/AndroidRuntime(9246): ... 11 more
가 사전에 감사합니다
Toast toast = Toast.makeText(getApplicationContext(), data.toString(), Toast.LENGTH_LONG);
toast.show();
다음은 전체 스택 추적입니다!
스택 추적 및 모델 클래스가 실제로 도움이 될 것입니다. –
필요한 정보를 추가했습니다. 코멘트 주셔서 감사합니다! –
http://stackoverflow.com/questions/4488654/using-simple-xml-serialization-to-load-data-from-res-raw-on-android?rq=1 –