安卓中的 SAXParseException

Posted

技术标签:

【中文标题】安卓中的 SAXParseException【英文标题】:SAXParseException in android 【发布时间】:2011-01-01 23:57:36 【问题描述】:

我正在关注“Professional android Application Development”一书并尝试实现一些示例。在第 5 章第 151 页中,以下代码会抛出 SAXParseException。有谁知道为什么?

Document dom = db.parse(in);

我尝试了其他 XML 文件,也抛出了同样的异常。


堆栈跟踪是这样的:

01-07 00:23:58.875: WARN/System.err(221): org.xml.sax.SAXParseException: 预期: /meta read: head (position:END_TAG @1:87 in java.io.InputStreamReader @43d0c720) 01-07 00:23:58.895: WARN/System.err(221): at org.apache.harmony.xml.parsers.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:151) 01-07 00:23:58.906: WARN/System.err(221): 在 javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:157) 01-07 00:23:58.915: WARN/System.err(221): at com.paad.earthquake.Earthquake.refreshEarthquakes(Earthquake.java:82) 01-07 00:23:58.925: WARN/System.err(221): at com.paad.earthquake.Earthquake.onCreate(Earthquake.java:60) 01-07 00:23:58.936: WARN/System.err(221): 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 01-07 00:23:58.936: WARN/System.err(221): 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2444) 01-07 00:23:58.946: WARN/System.err(221): 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2497) 01-07 00:23:58.955: WARN/System.err(221): 在 android.app.ActivityThread.access$2200(ActivityThread.java:119) 01-07 00:23:58.966: WARN/System.err(221): 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1848) 01-07 00:23:58.976: WARN/System.err(221): 在 android.os.Handler.dispatchMessage(Handler.java:99) 01-07 00:23:58.987: WARN/System.err(221): 在 android.os.Looper.loop(Looper.java:123) 01-07 00:23:58.996: WARN/System.err(221): 在 android.app.ActivityThread.main(ActivityThread.java:4338) 01-07 00:23:58.996: WARN/System.err(221): 在 java.lang.reflect.Method.invokeNative(Native Method) 01-07 00:23:59.026: WARN/System.err(221): 在 java.lang.reflect.Method.invoke(Method.java:521) 01-07 00:23:59.040: WARN/System.err(221): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860) 01-07 00:23:59.046: WARN/System.err(221): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) 01-07 00:23:59.056: WARN/System.err(221): at dalvik.system.NativeStart.main(Native Method)

【问题讨论】:

尝试打印出 SAXParseException 的完整异常堆栈跟踪并在此处发布。 【参考方案1】:

parse 方法会抛出 SAXParseException 以防在解析 XML 时出现任何会导致其余代码无法运行的问题,因为如果 XML 无效,那么您可能不希望您的代码继续。

parse 方法声明它为throws SAXParseException,因此您必须在调用该方法时显式捕获该异常,例如

try 
    Document dom = db.parse(in);
 catch (SAXParseException e) 
    e.printStackTrace();

【讨论】:

以上是关于安卓中的 SAXParseException的主要内容,如果未能解决你的问题,请参考以下文章

译安卓中的自动化测试

安卓中的Eventbus

学习笔记——安卓的下载路径;创建一个空的安卓project;Android中的日志工具划分

深入扒一扒安卓中的ADB命令

Android安卓中的存储

检测安卓设备中的HDMI端口