解析android中的大xml文件

问题描述:

在我的应用程序中有一个搜索选项。如果用户输入搜索值,我必须从web服务获取一个值。我正在获得一个大的webservice值。在我的web服务字符串值即将到来。我喜欢< >像xml字符实体引用一样。我想要替换所有字符并解析xml。任何人都可以告诉我如何做到这一点,举个例子吗?解析android中的大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(); 
     } 

我试过流的,我没有能够做到这一点。任何人都可以举例说明如何做到这一点?

您不应该自行分析它。有更好的方法 - SAX或DOM。 该资源包含了很多关于这两种方式有用inforamtion的(和代码示例太):http://onjava.com/pub/a/onjava/2002/06/26/xml.html

+0

你的意思是,“应该**不要**自己解析它”吗? – 2011-02-17 16:29:08

到这里看看,以了解详细内容,关于Android包括解析器:

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

但用SAX制作你自己的解析器可能是你的最佳选择;)