0

我正在尝试使用 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é 以及如何改善这一点?

谢谢你。

4

1 回答 1

1

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

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

于 2012-02-22T14:11:53.197 回答