【问题标题】:Android DOM parsing is tooo slowAndroid DOM解析太慢
【发布时间】:2012-02-22 14:03:40
【问题描述】:

我正在尝试使用 DOM 解析器解析 Web 响应,如下所示:

public static Document parseDocument(InputStream sr) throws Exception {
    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
    dbf.setNamespaceAware(true);
    dbf.setIgnoringComments(true);
    dbf.setIgnoringElementContentWhitespace(true);
    dbf.setCoalescing(true);
    //dbf.setValidating(false);
    Document xdoc = dbf.newDocumentBuilder().parse(new InputSource(sr));
    xdoc.normalize();
    return xdoc;
}

问题是

Document xdoc = dbf.newDocumentBuilder().parse(new InputSource(sr));

执行需要 3 分钟。我的 xml 文件有 3800 行。 是不是 normaé 以及如何改善这一点?

谢谢。

【问题讨论】:

    标签: android android-parser


    【解决方案1】:

    这对于 android 中的 DOM 解析来说太大了。内存消耗和对象分配是 porhobitive。 SAX asin 之前的答案是可行的解决方案,但 Pull-Parser(也包含在 android API 中)是更好、更现代的选择,因为它更容易编程 (使用 SAX 解析器驱动处理并将 XML 事件推送到您的处理程序,而 XPP 它是您的应用程序驱动解析器并将 xml 事件拉出流)

    更好的选择是构建在拉解析器之上的一些轻量级数据绑定框架 - jackson、xstream 等。它们将只交付对象 - 你根本不必担心 xml 解析

    【讨论】:

    • 感谢您的回答。请问在哪里可以找到合适的 Pull-Parser 示例?
    猜你喜欢
    • 2015-02-13
    • 2011-09-06
    • 1970-01-01
    • 2011-12-18
    • 2018-08-29
    • 2021-05-18
    • 2016-01-13
    • 2011-06-14
    • 2015-11-22
    相关资源
    最近更新 更多