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标签的过程。这种技术广泛应用于Web开发中,例如删除恶意代码、防止XSS攻击、显示纯文本等。 在Java中,过滤Html标签的方法有多种,包括...
根据提供的文件信息,本文将详细解释C#中用于过滤HTML标签的几种方法,并对每一步进行深入解析。此过程涉及正则表达式、字符串替换以及HTML实体编码转换等技术细节。 ### C#过滤HTML标签的方法 #### 方法一:使用...
### Java正则表达式过滤HTML标签 在处理文本数据时,经常会遇到需要从HTML文档中提取纯文本内容的需求。为了去除HTML标记并保留有意义的文字部分,可以利用Java中的正则表达式来实现这一功能。本篇文章将详细介绍...
可以实现java过滤html标签、过滤指定标签等等
描述中提到的“过滤html标签的代码,如果只是把类似的标记统统去掉,并不需要考虑别的”,暗示了一个简单的实现方式,即通过查找并替换所有小于号(`)和大于号(`>`)来移除HTML标签。这种方法虽然快速,但并不完善...
"wxParse过滤HTML标签.rar"就是为了解决这个问题而提供的一个解决方案。 wxParse是一个强大的微信小程序富文本解析插件,它能够帮助开发者将HTML内容转换成小程序可以识别和渲染的格式。主要目标是过滤掉HTML标签,...
在IT行业中,过滤HTML标签是常见的数据处理任务,特别是在处理用户输入、数据分析或者网页抓取时。这个主题的标题“过滤HTML标签类”暗示我们将会探讨一个专门用于去除或处理HTML标签的类或库。这类工具通常用于确保...
【PHP过滤HTML标记属性类】 在PHP中,处理和过滤HTML标记的属性是确保网站安全性的重要步骤,特别是防止跨站脚本(XSS)攻击。`HtmlAttributeFilter` 类提供了一个方便的方式来过滤掉不需要或者可能带来安全隐患的...
* public strip 过滤属性 * public setAllow 设置允许的属性 * public setException 设置特例 * public setIgnore 设置忽略的标记 * private findElements 搜寻需要处理的元素 * private findAttributes 搜寻属性 * ...
在HTML标记处理中,正则表达式可以用来过滤、提取和替换HTML标签。 本文将介绍如何使用Java正则表达式来过滤HTML标签,包括过滤所有以“<”开头以“>”结尾的标签、提取IMG标签的SRC属性等。 过滤所有以“<”开头...
过滤HTML标签的方法之一,非常好用,可以根据自己的需求来过滤相应的标签
在互联网编程中,过滤HTML标签是一个常见需求,尤其在处理用户输入的内容时,防止潜在的跨站脚本攻击(XSS)等安全问题。本文将详细介绍如何使用JavaScript中的正则表达式来过滤HTML标签,通过一个简单的实例来演示...
标题“java使用正则表达式过滤html标签”意味着文章的主题是关于如何使用Java编程语言结合正则表达式来清除或处理HTML标签,这是在处理Web开发中经常会遇到的需求。描述中提到,文章将介绍这一技术,并希望读者通过...
通过这些知识点,我们可以了解到如何在C#中使用正则表达式来过滤HTML标签并保留特定标签。需要注意的是,正则表达式虽然强大,但在处理复杂的HTML结构时可能会遇到一些限制,因为HTML不是正则表达式的正规语言。在...
【PHP过滤HTML标记属性类】 在PHP中,处理用户输入的HTML字符串时,为了确保网站的安全性,通常需要过滤掉可能含有恶意代码的HTML属性。这个过程被称为HTML属性过滤。`HtmlAttributeFilter`类就是一个实现这一功能...
`UnHtmlScript`工具类就是为了解决这个问题而设计的,它能够帮助开发者有效地过滤掉HTML、CSS和JavaScript标签,提取出纯文本内容。 HTML标签是用来构建网页结构的,例如`<p>`用于段落,`<a>`用于链接等。CSS则是...
考虑到网络内容常包含HTML标签,DzFilter提供了过滤HTML标签的功能,避免了标签干扰敏感词检测的问题。这一特性使得它在处理网页内容时更加得心应手。 总的来说,DzFilter是一款集多种功能于一体的文本处理工具,其...
过滤含html标签的字符串 过滤含html标签的字符串 过滤含html标签的字符串 过滤含html标签的字符串 过滤含html标签的字符串 过滤含html标签的字符串 过滤含html标签的字符串 过滤含html标签的字符串
HTML(超文本标记语言)是一种用于创建网页的标准标记语言,它由一系列标签组成,如`<p>`(段落)、`<a>`(链接)等。在读取HTML时,我们可能希望提取纯文本内容,忽略或过滤掉这些标签。 1. **使用DOM解析器**: ...