I'm using SimpleXML v2.5.3 and when I try to save my file in Android data path, an exception comes. The file is in it, but empty (0 K).
My code:
public static void StoreXML(String a, String b) {
try {
Serializer serializer = new Persister();
MyXML myxml = new MyXML();
myxml.setA(a);
myxml.setB(b);
File result = new File(Environment.getDataDirectory()+"/data/part.aplication/myxml.xml");
serializer.write(myxml, result); //line 25
} catch (Exception e) {
e.printStackTrace();
}
}
The Log:
05-10 16:00:07.771: ERROR/AndroidRuntime(1287): FATAL EXCEPTION: main
05-10 16:00:07.771: ERROR/AndroidRuntime(1287): java.lang.VerifyError: org.simpleframework.xml.core.StructureBuilder
05-10 16:00:07.771: ERROR/AndroidRuntime(1287): at org.simpleframework.xml.core.Scanner.<init>(Scanner.java:89)
05-10 16:00:07.771: ERROR/AndroidRuntime(1287): at org.simpleframework.xml.core.ScannerFactory.getInstance(ScannerFactory.java:66)
05-10 16:00:07.771: ERROR/AndroidRuntime(1287): at org.simpleframework.xml.core.Support.getScanner(Support.java:170)
05-10 16:00:07.771: ERROR/AndroidRuntime(1287): at org.simpleframework.xml.core.Support.getName(Support.java:232)
05-10 16:00:07.771: ERROR/AndroidRuntime(1287): at org.simpleframework.xml.core.Source.getName(Source.java:250)
05-10 16:00:07.771: ERROR/AndroidRuntime(1287): at org.simpleframework.xml.core.Traverser.getName(Traverser.java:284)
05-10 16:00:07.771: ERROR/AndroidRuntime(1287): at org.simpleframework.xml.core.Traverser.write(Traverser.java:203)
05-10 16:00:07.771: ERROR/AndroidRuntime(1287): at org.simpleframework.xml.core.Traverser.write(Traverser.java:186)
05-10 16:00:07.771: ERROR/AndroidRuntime(1287): at org.simpleframework.xml.core.Persister.write(Persister.java:1187)
05-10 16:00:07.771: ERROR/AndroidRuntime(1287): at org.simpleframework.xml.core.Persister.write(Persister.java:1169)
05-10 16:00:07.771: ERROR/AndroidRuntime(1287): at org.simpleframework.xml.core.Persister.write(Persister.java:1147)
05-10 16:00:07.771: ERROR/AndroidRuntime(1287): at org.simpleframework.xml.core.Persister.write(Persister.java:1266)
05-10 16:00:07.771: ERROR/AndroidRuntime(1287): at org.simpleframework.xml.core.Persister.write(Persister.java:1248)
05-10 16:00:07.771: ERROR/AndroidRuntime(1287): at org.simpleframework.xml.core.Persister.write(Persister.java:1229)
05-10 16:00:07.771: ERROR/AndroidRuntime(1287): at org.simpleframework.xml.core.Persister.write(Persister.java:1208)
05-10 16:00:07.771: ERROR/AndroidRuntime(1287): at part.tools.EncXML.EncodeXML(MyXML.java:25)
05-10 16:00:07.771: ERROR/AndroidRuntime(1287): at part.aplication.Entrada.onCreate(Entrada.java:63)
05-10 16:00:07.771: ERROR/AndroidRuntime(1287): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
05-10 16:00:07.771: ERROR/AndroidRuntime(1287): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
05-10 16:00:07.771: ERROR/AndroidRuntime(1287): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
05-10 16:00:07.771: ERROR/AndroidRuntime(1287): at android.app.ActivityThread.access$2300(ActivityThread.java:125)
05-10 16:00:07.771: ERROR/AndroidRuntime(1287): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
05-10 16:00:07.771: ERROR/AndroidRuntime(1287): at android.os.Handler.dispatchMessage(Handler.java:99)
05-10 16:00:07.771: ERROR/AndroidRuntime(1287): at android.os.Looper.loop(Looper.java:123)
05-10 16:00:07.771: ERROR/AndroidRuntime(1287): at android.app.ActivityThread.main(ActivityThread.java:4627)
05-10 16:00:07.771: ERROR/AndroidRuntime(1287): at java.lang.reflect.Method.invokeNative(Native Method)
05-10 16:00:07.771: ERROR/AndroidRuntime(1287): at java.lang.reflect.Method.invoke(Method.java:521)
05-10 16:00:07.771: ERROR/AndroidRuntime(1287): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
05-10 16:00:07.771: ERROR/AndroidRuntime(1287): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
05-10 16:00:07.771: ERROR/AndroidRuntime(1287): at dalvik.system.NativeStart.main(Native Method)
I've tested with SimpleXML v2.4 and it works.
Does:
new File(Environment.getDataDirectory(), "myxml.xml")
work?
And can you show us the MyXML class and its annotations because the error says that the structure could not be verified.
It's not working.
About
@Root(name="MyXML")
public class MyXML{
private String a;
private String b;
@Element(name="A")
public void setA(String a){
this.a=a;
}
@Element(name="A")
public String getA() {
return a;
}
@Element(name="B")
public void setB(String b){
this.b=b;
}
@Element(name="B")
public String getB() {
return b;
}
}
Could you please provide more information. Like the android version perhaps? How are you running this? Is this runnin in Eclipse or on an android device? Also, probably best to send updates to the mailing list.