`
easyhaohao
  • 浏览: 13527 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
社区版块
存档分类
最新评论

过滤HTML标记

阅读更多
package normal;

/*
 * Copyright (c) 2004 David Flanagan.  All rights reserved.
 * This code is from the book Java Examples in a Nutshell, 3nd Edition.
 * It is provided AS-IS, WITHOUT ANY WARRANTY either expressed or implied.
 * You may study, use, and modify it for any non-commercial purpose,
 * including teaching and use in open-source projects.
 * You may distribute it non-commercially as long as you retain this notice.
 * For a commercial use license, or to purchase the book, 
 * please visit http://www.davidflanagan.com/javaexamples3.
 */
import java.io.*;

/**
 * A simple FilterReader that strips HTML tags (or anything between
 * pairs of angle brackets) out of a stream of characters.
 **/
public class RemoveHTMLReader extends FilterReader {
    /** A trivial constructor.  Just initialize our superclass */
    public RemoveHTMLReader(Reader in) { super(in); }
    
    boolean intag = false;    // Used to remember whether we are "inside" a tag

    /** 
     * This is the implementation of the no-op read() method of FilterReader.
     * It calls in.read() to get a buffer full of characters, then strips
     * out the HTML tags.  (in is a protected field of the superclass).
     **/
    public int read(char[] buf, int from, int len) throws IOException {
        int numchars = 0;        // how many characters have been read
        // Loop, because we might read a bunch of characters, then strip them
        // all out, leaving us with zero characters to return.
        while (numchars == 0) {
            numchars = in.read(buf, from, len); // Read characters
            if (numchars == -1) return -1;      // Check for EOF and handle it.

            // Loop through the characters we read, stripping out HTML tags.
            // Characters not in tags are copied over previous tags 
            int last = from;                    // Index of last non-HTML char
            for(int i = from; i < from + numchars; i++) { 
                if (!intag) {                      // If not in an HTML tag
                    if (buf[i] == '<') intag = true; // check for tag start
                    else buf[last++] = buf[i];       // and copy the character
                }
                else if (buf[i] == '>') intag = false;  // check for end of tag
            }
            numchars = last - from; // Figure out how many characters remain
        }                           // And if it is more than zero characters
        return numchars;            // Then return that number.
    } 
    
    /** 
     * This is another no-op read() method we have to implement.  We 
     * implement it in terms of the method above.  Our superclass implements
     * the remaining read() methods in terms of these two.
     **/
    public int read() throws IOException { 
        char[] buf = new char[1];
        int result = read(buf, 0, 1);
        if (result == -1) return -1;
        else return (int)buf[0];
    }
    
    /** This class defines a main() method to test the RemoveHTMLReader */
    public static class Test {
        /** The test program: read a text file, strip HTML, print to console */
        public static void main(String[] args) {
            try {
                //   if (args.length != 1) 
                //    throw new IllegalArgumentException("Wrong number of args");
                // Create a stream to read from the file and strip tags from it
                BufferedReader in = new BufferedReader(
			     new RemoveHTMLReader(new FileReader("d:/城院公告.htm")));
                // Read line by line, printing lines to the console
                String line;
                while((line = in.readLine()) != null)
                    System.out.println(line);
                in.close();  // Close the stream.
                
                
            }
            catch(Exception e) {
                System.err.println(e);
                System.err.println("Usage: java RemoveHTMLReader$Test" +
				   " <filename>");
            }
        }
    }
}



分享到:
评论

相关推荐

    Java 中 过滤Html标签

    "Java 中过滤Html标签" Java 中过滤Html标签是指在Java语言中删除或替换HTML标签的过程。这种技术广泛应用于Web开发中,例如删除恶意代码、防止XSS攻击、显示纯文本等。 在Java中,过滤Html标签的方法有多种,包括...

    C# 过滤HTML标签的几种方法

    根据提供的文件信息,本文将详细解释C#中用于过滤HTML标签的几种方法,并对每一步进行深入解析。此过程涉及正则表达式、字符串替换以及HTML实体编码转换等技术细节。 ### C#过滤HTML标签的方法 #### 方法一:使用...

    java正则表达式过滤html标签

    ### Java正则表达式过滤HTML标签 在处理文本数据时,经常会遇到需要从HTML文档中提取纯文本内容的需求。为了去除HTML标记并保留有意义的文字部分,可以利用Java中的正则表达式来实现这一功能。本篇文章将详细介绍...

    java过滤html标签

    可以实现java过滤html标签、过滤指定标签等等

    过滤html标签函数

    描述中提到的“过滤html标签的代码,如果只是把类似的标记统统去掉,并不需要考虑别的”,暗示了一个简单的实现方式,即通过查找并替换所有小于号(`)和大于号(`&gt;`)来移除HTML标签。这种方法虽然快速,但并不完善...

    wxParse过滤HTML标签.rar

    "wxParse过滤HTML标签.rar"就是为了解决这个问题而提供的一个解决方案。 wxParse是一个强大的微信小程序富文本解析插件,它能够帮助开发者将HTML内容转换成小程序可以识别和渲染的格式。主要目标是过滤掉HTML标签,...

    过滤HTML标签类

    在IT行业中,过滤HTML标签是常见的数据处理任务,特别是在处理用户输入、数据分析或者网页抓取时。这个主题的标题“过滤HTML标签类”暗示我们将会探讨一个专门用于去除或处理HTML标签的类或库。这类工具通常用于确保...

    php过滤html标记属性类用法实例_.docx

    【PHP过滤HTML标记属性类】 在PHP中,处理和过滤HTML标记的属性是确保网站安全性的重要步骤,特别是防止跨站脚本(XSS)攻击。`HtmlAttributeFilter` 类提供了一个方便的方式来过滤掉不需要或者可能带来安全隐患的...

    php过滤html标记属性类

    * public strip 过滤属性 * public setAllow 设置允许的属性 * public setException 设置特例 * public setIgnore 设置忽略的标记 * private findElements 搜寻需要处理的元素 * private findAttributes 搜寻属性 * ...

    Java正则表达式过滤html标签1[参考].pdf

    在HTML标记处理中,正则表达式可以用来过滤、提取和替换HTML标签。 本文将介绍如何使用Java正则表达式来过滤HTML标签,包括过滤所有以“&lt;”开头以“&gt;”结尾的标签、提取IMG标签的SRC属性等。 过滤所有以“&lt;”开头...

    过滤HTML标签的方法之一

    过滤HTML标签的方法之一,非常好用,可以根据自己的需求来过滤相应的标签

    js过滤HTML标签完整实例

    在互联网编程中,过滤HTML标签是一个常见需求,尤其在处理用户输入的内容时,防止潜在的跨站脚本攻击(XSS)等安全问题。本文将详细介绍如何使用JavaScript中的正则表达式来过滤HTML标签,通过一个简单的实例来演示...

    java使用正则表达式过滤html标签

    标题“java使用正则表达式过滤html标签”意味着文章的主题是关于如何使用Java编程语言结合正则表达式来清除或处理HTML标签,这是在处理Web开发中经常会遇到的需求。描述中提到,文章将介绍这一技术,并希望读者通过...

    C#正则过滤HTML标签并保留指定标签的方法

    通过这些知识点,我们可以了解到如何在C#中使用正则表达式来过滤HTML标签并保留特定标签。需要注意的是,正则表达式虽然强大,但在处理复杂的HTML结构时可能会遇到一些限制,因为HTML不是正则表达式的正规语言。在...

    php过滤html标记属性类用法实例__1.docx

    【PHP过滤HTML标记属性类】 在PHP中,处理用户输入的HTML字符串时,为了确保网站的安全性,通常需要过滤掉可能含有恶意代码的HTML属性。这个过程被称为HTML属性过滤。`HtmlAttributeFilter`类就是一个实现这一功能...

    java过滤html,css,js标签工具类(UnHtmlScript)

    `UnHtmlScript`工具类就是为了解决这个问题而设计的,它能够帮助开发者有效地过滤掉HTML、CSS和JavaScript标签,提取出纯文本内容。 HTML标签是用来构建网页结构的,例如`&lt;p&gt;`用于段落,`&lt;a&gt;`用于链接等。CSS则是...

    DzFilter,使用DFA算法实现的内容安全,反垃圾,智能鉴黄,敏感词过滤,不良信息检测,文本校验,敏感词检测,包括关键词提取,过滤html标签等。

    考虑到网络内容常包含HTML标签,DzFilter提供了过滤HTML标签的功能,避免了标签干扰敏感词检测的问题。这一特性使得它在处理网页内容时更加得心应手。 总的来说,DzFilter是一款集多种功能于一体的文本处理工具,其...

    过滤含html标签的字符串

    过滤含html标签的字符串 过滤含html标签的字符串 过滤含html标签的字符串 过滤含html标签的字符串 过滤含html标签的字符串 过滤含html标签的字符串 过滤含html标签的字符串 过滤含html标签的字符串

    java 读取html过滤标签

    HTML(超文本标记语言)是一种用于创建网页的标准标记语言,它由一系列标签组成,如`&lt;p&gt;`(段落)、`&lt;a&gt;`(链接)等。在读取HTML时,我们可能希望提取纯文本内容,忽略或过滤掉这些标签。 1. **使用DOM解析器**: ...

Global site tag (gtag.js) - Google Analytics