我从webservice获取值而unescape xml值。我将它存储在stringBuffer中。我从webservice获得了很多价值。所以我出现了内存错误。谁能告诉我如何避免这种情况?
我的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("&"))
buf.append('&');
else if (substr.equals("<"))
buf.append('<');
else if (substr.equals(">"))
buf.append('>');
else if (substr.equals("""))
buf.append('"');
else if (substr.equals("'"))
buf.append('\'');
else if (substr.equals(" "))
buf.append(" ");
else
// ????
buf.append(substr);
i = pos;
}
} else {
buf.append(c);
}
}
return buf.toString();
}
由于
答案 0 :(得分:1)
您应该切换到流式传输数据并将其作为自定义Stream或Reader类的一部分进行转换,而不是尝试一次读取所有内容。
答案 1 :(得分:0)
不确定这是否就是你正在做的事情,但它实际上看起来你只是用相应的字符替换html实体。 Document
类中已经提供了函数。您可能正在寻找normalizeDocument()
。在这种情况下,您应该使用流而不是字符串。