解析android中的大xml文件

时间:2011-02-17 15:52:35

标签: android

在我的应用程序中有一个搜索选项。如果用户输入搜索值,我必须从Web服务获取值。我获得了大量的Web服务价值。在我的webservice中,字符串值即将到来。我变得喜欢<>像xml字符实体引用一样。我想替换所有字符并解析xml。任何人都可以告诉我如何做这个并给出一个例子吗?

我尝试用StringBuffer替换unescapexml字符,我出现内存错误

public  String unescapeXML(String str) {
        if (str == null || str.length() == 0)
          return "";

        StringBuffer buf = new StringBuffer();
        int len = str.length();
        for (int i = 0; i < len; ++i) {
          char c = str.charAt(i);
          if (c == '&') {
            int pos = str.indexOf(";", i);
            if (pos == -1) { // Really evil
              buf.append('&');
            } else if (str.charAt(i + 1) == '#') {
              int val = Integer.parseInt(str.substring(i + 2, pos), 16);
              buf.append((char) val);
              i = pos;
            } else {
              String substr = str.substring(i, pos + 1);
              if (substr.equals("&amp;"))
                buf.append('&');
              else if (substr.equals("&lt;"))
                buf.append('<');
              else if (substr.equals("&gt;"))
                buf.append('>');
              else if (substr.equals("&quot;"))
                buf.append('"');
              else if (substr.equals("&apos;"))
                buf.append('\'');
              else if (substr.equals("&nbsp;"))
                  buf.append(" ");

              else
                // ????
                buf.append(substr);
              i = pos;
            }
          } else {
            buf.append(c);
          }
        }
        return buf.toString();
      }

我尝试使用流,但我无法做到。任何人都可以举例说明如何做到这一点吗?

2 个答案:

答案 0 :(得分:3)

你不应该自己解析它。有更好的方法 - SAX或DOM。 这个资源包含了很多有关这两种方式的有用信息(以及代码示例):http://onjava.com/pub/a/onjava/2002/06/26/xml.html

答案 1 :(得分:0)

看看这里是为了获得有关Android包含解析器的更多细节:

http://developer.android.com/reference/javax/xml/parsers/package-summary.html

但是使用SAX创建自己的解析器可能是您的最佳选择;)