Java 在没有正则表达式的情况下从 String 中删除 HTML

标签 java html parsing

我正在尝试从字符串中删除所有 HTML 元素。不幸的是,我不能使用正则表达式,因为我在黑莓平台上开发,目前还不支持正则表达式。

有没有其他方法可以从字符串中删除 HTML?我在某处读到您可以使用 DOM 解析器,但我找不到太多内容。

HTML 文本:

<![CDATA[As a massive asteroid hurtles toward Earth, NASA head honcho Dan Truman (<a href="http://www.netflix.com/RoleDisplay/Billy_Bob_Thornton/20000303">Billy Bob Thornton</a>) hatches a plan to split the deadly rock in two before it annihilates the entire planet, calling on Harry Stamper (<a href="http://www.netflix.com/RoleDisplay/Bruce_Willis/99786">Bruce Willis</a>) -- the world's finest oil driller -- to head up the mission. With time rapidly running out, Stamper assembles a crack team and blasts off into space to attempt the treacherous task. <a href="http://www.netflix.com/RoleDisplay/Ben_Affleck/20000016">Ben Affleck</a> and <a href="http://www.netflix.com/RoleDisplay/Liv_Tyler/162745">Liv Tyler</a> co-star.]]>

没有 HTML 的文本:

当一颗巨大的小行星冲向地球时,美国国家航空航天局局长丹·杜鲁门(比利·鲍勃·松顿饰)制定了一个计划,在这颗致命的岩石毁灭整个星球之前将其一分为二,并呼吁哈里·斯坦珀(布鲁斯·威利斯饰)——世界上最好的石油钻探员——领导这项任务。随着时间的流逝,Stamper 组建了一支精干的团队并飞向太空以尝试执行这项艰巨的任务。Ben Affleck 和 Liv Tyler 联合主演。

谢谢!

最佳答案

在野外解析 HTML 有很多细微差别,其中一个有趣的地方是许多页面不遵循任何标准。这就是说,如果您所有的 HTML 都将像您的示例一样简单,那么这样的事情就足够了:

    char[] cs = s.toCharArray();
    StringBuilder sb = new StringBuilder();
    boolean tag = false;
    for (int i=0; i<cs.length; i++) {
        switch(cs[i]) {
            case '<': if ( ! tag) { tag = true; break; }
            case '>': if (tag) { tag = false; break; }
            case '&': i += interpretEscape(cs, i, sb); break;
            default: if ( ! tag) sb.append(cs[i]);
        }
    }
    System.err.println(sb);

interpretEscape() 应该知道如何将 HTML 转义符(例如 >)转换为对应的字符,并跳过所有字符直到结尾的 ;

关于Java 在没有正则表达式的情况下从 String 中删除 HTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2488967/

相关文章:

java - 将按钮添加到 TableView JavaFX 中的列

java - Gradle 'war' 插件如何知道调用 Spring Framework?

JavaScript 一条语句不工作

parsing - 在 Common Lisp 中读取文件并转换为基于 n 元树的嵌套列表?

parsing - Lua ISO 8601 日期时间解析模式

java - 向表中添加新行时向下移动 JTable 行

java - 为什么 java newInstance 卡在 getDeclaredConstructors0 处?

html - 具有不透明度关键帧的对象上的 Chrome 中的边界半径错误

html - 线性渐变在 Safari 上不显示正确的颜色

java - ANTLR 中解析输入时出错