HTML 取消转义字符串时 Android 内存不足异常
我必须 HTML 转义字符串(HTML 转义的 XML 文件(所以我的字符串中的所有 val 都是 & lt;TAG& gt;val& lt;/TAG& gt; 等等)大小 ~1,4MB,以便我可以在解析器中使用未转义的 XML)
我遇到的问题是,当我在使用时尝试获取未转义的字符串时,我总是遇到内存不足的异常StringEscapeUtils.unescapeHtml(String)(apache-commons-lang-2.6 库)。
我还尝试了基本 android api 的方法来对字符串进行转义,但除了速度慢之外,内存不足异常甚至在较小的字符串(~700kb)中发生。
有人可以建议我如何处理这样的字符串转换而不遇到内存不足异常吗?
I've to HTML unescape a String (HTML escaped XML File (So all val in my String are & lt;TAG& gt;val& lt;/TAG& gt; and so on) Size ~1,4MB so that I can use the unescaped XML in a parser)
The problem I'm running into is that I always get an out of memory exception when I try to get the unescaped String when I'm using StringEscapeUtils.unescapeHtml(String) (apache-commons-lang-2.6 library).
I also tried the method of the basic android api to unescape the string but beside the fact that it was slow as hell the out of memory exception even occured with smaller Strings (~700kb).
Can someone suggest me how I can handle such a String tranformation without running into an out of memory exception?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
Java 有一些很好的核心工具可以让这件事变得非常简单。
下面的解决方案使用正则表达式来浏览您的内容并允许您替换字符。该解决方案确实需要做一些工作,因为您需要提供转义码。您可以在此处找到转义代码列表 [http://www.w3.org/TR/html4/sgml/entities.html][1] 或通过 Google 搜索其他代码。
下面是代码:
代码中发生了什么:
尝试一下。我对像您这样的大文件的性能没有任何了解。但是,代码非常简单,您可以对其进行调整以获得所需的性能。
Java has some good core facilities to get do this really simple.
The solution below uses regular expression to go through your content and allows you to replace the characters. This solution does require to do a little work in that you need to provide the escape codes. You can find a list of escape codes here [http://www.w3.org/TR/html4/sgml/entities.html][1] or Google the web for others.
Here is the code below:
What is going on in the code:
Try that. I have no insight on performance of large files such as yours. But, the code is simple enough to where you can tweak it to get the desired performance.