Существуют ли эффективные парсеры XML для Android для эффективного анализа больших файлов XML. Документ XML содержит текст HTML внутри элемента без CDATA.
В настоящее время я использую SAX Parser в Android. Я добавляю строки, когда они разбиваются на символы HTML, но для анализа всего файла требуется до 4-5 минут. Как только я начинаю парсинг, эмулятор прерывается. Журнал кота o / p показан ниже:
Мой текущий сценарий:
- 11 МБ XML-файл на SD-карте
- Файл содержит текст HTML для некоторых элементов в XML и не включен в CDATA
- Эмулятор прерывается через 2-3 минуты
Мои запросы:
- Существуют ли в Android практические ограничения для анализа больших файлов
- Должен ли я использовать другой парсер, более эффективный для таких файлов
01-20 12: 44: 22.133: I / dalvikvm (19715): DALVIK THREADS:
01-20 12: 44: 22.143: I / dalvikvm (19715): «основной» prio = 5 тид = 1 TIMED_WAIT
01-20 12: 44: 22.143: I / dalvikvm (19715): | group = "main" sCount = 1 dsCount = 0 s = N obj = 0x4001d8e0 self = 0xccb0
01-20 12: 44: 22.143: I / dalvikvm (19715): | sysTid = 19715 nice = 0 sched = 0/0 cgrp = дескриптор по умолчанию = -1345026008
01-20 12: 44: 22.143: I / dalvikvm (19715): | schedstat = (1890827936 745978586 1231)
01-20 12: 44: 22.143: I / dalvikvm (19715): at java.lang.Object.wait (собственный метод)
01-20 12: 44: 22.143: I / dalvikvm (19715): - ожидание <0x44e7c158> (android.os.MessageQueue)
01-20 12: 44: 22.143: I / dalvikvm (19715): на java.lang.Object.wait (Object.java:326)
01-20 12: 44: 22.143: I / dalvikvm (19715): на android.os.MessageQueue.next (MessageQueue.java:142)
01-20 12: 44: 22.143: I / dalvikvm (19715): на android.os.Looper.loop (Looper.java:110)
01-20 12: 44: 22.143: I / dalvikvm (19715): на android.app.ActivityThread.main (ActivityThread.java:4627)
01-20 12: 44: 22.143: I / dalvikvm (19715): at java.lang.reflect.Method.invokeNative (родной метод)
01-20 12: 44: 22.152: I / dalvikvm (19715): на java.lang.reflect.Method.invoke (Method.java:521)
01-20 12: 44: 22.152: I / dalvikvm (19715): на com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:868)
01-20 12: 44: 22.152: I / dalvikvm (19715): на com.android.internal.os.ZygoteInit.main (ZygoteInit.java:626)
01-20 12: 44: 22.152: I / dalvikvm (19715): at dalvik.system.NativeStart.main (собственный метод)
01-20 12: 44: 22.152: I / dalvikvm (19715): «AsyncTask # 1» prio = 5 tid = 7 RUNNABLE
01-20 12: 44: 22.152: I / dalvikvm (19715): | group = "main" sCount = 0 dsCount = 0 s = N obj = 0x44e98170 self = 0x116238
01-20 12: 44: 22.152: I / dalvikvm (19715): | sysTid = 19721 nice = 0 sched = 0/0 cgrp = дескриптор по умолчанию = 1139576
01-20 12: 44: 22.162: I / dalvikvm (19715): | schedstat = (30192250334 11754013998 4287)
01-20 12: 44: 22.162: I / dalvikvm (19715): на java.lang.AbstractStringBuilder. (AbstractStringBuilder.java:~89)
01-20 12: 44: 22.162: I / dalvikvm (19715): в java.lang.StringBuilder. (StringBuilder.java:96)
01-20 12: 44: 22.162: I / dalvikvm (19715): по адресу com.app.sampleApp.ExampleHandler.characters (ExampleHandler.java:346)
01-20 12: 44: 22.162: I / dalvikvm (19715): по адресу org.apache.harmony.xml.ExpatParser.text (ExpatParser.java:167)
01-20 12: 44: 22.162: I / dalvikvm (19715): в org.apache.harmony.xml.ExpatParser.append (собственный метод)
01-20 12: 44: 22.162: I / dalvikvm (19715): в org.apache.harmony.xml.ExpatParser.parseFragment (ExpatParser.java:521)
01-20 12: 44: 22.162: I / dalvikvm (19715): в org.apache.harmony.xml.ExpatParser.parseDocument (ExpatParser.java:482)
01-20 12: 44: 22.162: I / dalvikvm (19715): в org.apache.harmony.xml.ExpatReader.parse (ExpatReader.java:320)
01-20 12: 44: 22.162: I / dalvikvm (19715): в org.apache.harmony.xml.ExpatReader.parse (ExpatReader.java:277)
01-20 12: 44: 22.162: I / dalvikvm (19715): at com.app.sampleApp.SplashScreen.parsing (SplashScreen.java:95)
01-20 12: 44: 22.162: I / dalvikvm (19715): в com.app.sampleApp.SplashScreen $ FetchDataFromServer.doInBackground (SplashScreen.java:66)
01-20 12: 44: 22.162: I / dalvikvm (19715): в com.app.sampleApp.SplashScreen $ FetchDataFrom.doInBackground (SplashScreen.java:1)
01-20 12: 44: 22.173: I / dalvikvm (19715): atroid.os.AsyncTask $ 2.call (AsyncTask.java:185)
01-2012: 44: 22.173: I / dalvikvm (19715): at java.util.concurrent.FutureTask $ Sync.innerRun (FutureTask.java:305)
01-20 12: 44: 22.173: I / dalvikvm (19715): в java.util.concurrent.FutureTask.run (FutureTask.java:137)
01-20 12: 44: 22.173: I / dalvikvm (19715): в java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java: 1068)
01-20 12: 44: 22.173: I / dalvikvm (19715): at java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:561)
01-20 12:44: 22.173: I / dalvikvm (19715): в java.lang.Thread.run (Thread.java:1096)
01-20 12: 44: 22.173: I / dalvikvm (19715): «Нить связующего # 2» prio = 5 tid = 6 NATIVE
01-2012: 44: 22.173: I / dalvikvm (19715): |group = "main" sCount = 1 dsCount = 0 s = N obj = 0x44e7adc0 self = 0x136b18
01-20 12: 44: 22.173: I / dalvikvm (19715): |sysTid = 19720 nice = 0 sched = 0/0 cgrp = дескриптор по умолчанию = 1277072
01-20 12: 44: 22.173: I / dalvikvm (19715): |schedstat = (4379710 8487993 4)
01-20 12: 44: 22.173: I / dalvikvm (19715): at dalvik.system.NativeStart.run (собственный метод)
01-20 12: 44: 22.183:I / dalvikvm (19715): «Нить связующего # 1» prio = 5 tid = 5 NATIVE
01-20 12: 44: 22.183: I / dalvikvm (19715): |group = "main" sCount = 1 dsCount = 0 s = N obj = 0x44e77130 self = 0x132868
01-20 12: 44: 22.183: I / dalvikvm (19715): |sysTid = 19719 nice = 0 sched = 0/0 cgrp = дескриптор по умолчанию = 1271608
01-20 12: 44: 22.183: I / dalvikvm (19715): |schedstat = (9087362 4814877 5)
01-20 12: 44: 22.183: I / dalvikvm (19715): at dalvik.system.NativeStart.run (собственный метод)
01-20 12: 44: 22.183:I / dalvikvm (19715): демон "JDWP" prio = 5 tid = 4 VMWAIT
01-20 12: 44: 22.183: I / dalvikvm (19715): |group = "system" sCount = 1 dsCount = 0 s = N obj = 0x44e752a0 self = 0x1245a0
01-20 12: 44: 22.183: I / dalvikvm (19715): |sysTid = 19718 nice = 0 sched = 0/0 cgrp = дескриптор по умолчанию = 1178336
01-20 12: 44: 22.183: I / dalvikvm (19715): |schedstat = (13148782 23404684 16)
01-20 12: 44: 22.183: I / dalvikvm (19715): at dalvik.system.NativeStart.run (собственный метод)
01-20 12: 44: 22.183:I / dalvikvm (19715): демон "Ловец сигналов" prio = 5 tid = 3 VMWAIT
01-20 12: 44: 22.183: I / dalvikvm (19715): |group = "system" sCount = 1 dsCount = 0 s = N obj = 0x44e751e8 self = 0x120298
01-20 12: 44: 22.183: I / dalvikvm (19715): |sysTid = 19717 nice = 0 sched = 0/0 cgrp = дескриптор по умолчанию = 1275872
01-20 12: 44: 22.192: I / dalvikvm (19715): |schedstat = (650295 9179530 2)
01-20 12: 44: 22.192: I / dalvikvm (19715): at dalvik.system.NativeStart.run (собственный метод)
01-20 12: 44: 22.192:I / dalvikvm (19715): демон HeapWorker prio = 5 tid = 2 VMWAIT
01-20 12: 44: 22.192: I / dalvikvm (19715): |group = "system" sCount = 1 dsCount = 0 s = N obj = 0x438b8d00 self = 0x12efc0
01-20 12: 44: 22.192: I / dalvikvm (19715): |sysTid = 19716 nice = 0 sched = 0/0 cgrp = дескриптор по умолчанию = 1249312
01-20 12: 44: 22.192: I / dalvikvm (19715): |schedstat = (92741950 1647777523 865)
01-20 12: 44: 22.192: I / dalvikvm (19715): на com.android.internal.os.BinderInternal $ GcWatcher.finalize (BinderInternal.java:~48)
01-20 12: 44: 22.192: I / dalvikvm (19715): at dalvik.system.NativeStart.run (собственный метод)