java 如何去除html中的一个指定标签和指定标签里的内容

Python046

java 如何去除html中的一个指定标签和指定标签里的内容,第1张

java处理html指定标签最好用正则表达式。例如要去除html中所有的h1标签和类容就可以用下面的演示代码:

package konw.reg

import java.io.BufferedReader

import java.io.BufferedWriter

import java.io.FileNotFoundException

import java.io.FileReader

import java.io.FileWriter

import java.io.IOException

import java.util.regex.Matcher

import java.util.regex.Pattern

public class RemoveTag

{

    public static void main(String[] args)

    {

        FileReader fr

        String content =null

        String regex = "<[Hh]1>.*</[Hh]1>"

        try

        {

            fr = new FileReader("tag.html")

            BufferedReader br = new BufferedReader(fr)

            String str = null

            StringBuffer sb = new StringBuffer()

            while((str = br.readLine()) != null)

            {

                sb.append(str+"\n")

            }

            content = sb.toString()

            br.close()

            

        } catch (FileNotFoundException e)

        {

            e.printStackTrace()

        } catch (IOException e)

        {

            e.printStackTrace()

        }

        Pattern pattern = Pattern.compile(regex)

        Matcher matcher = pattern.matcher(content)

        StringBuffer sb1 = new StringBuffer()

        while(matcher.find())

        {

            sb1.append(matcher.replaceAll("")+"\n")

        }

        try

        {

            FileWriter fw = new FileWriter("tag.html")

            BufferedWriter bw = new BufferedWriter(fw)

            fw.write(sb1.toString())

            bw.close()

        } catch (IOException e)

        {

            e.printStackTrace()

        }

    }

}

可以通过replaceAll方法进行字符串替换,之后替换的内容用正则表达式来匹配。举例

String ss="<div id='mini_nav_qq'><li><a target='_top' " +

  "href='http:// lady.qq.com/emo/emotio.shtml'>情感</a></li><li>" +

  "<a target='_top' href='http://lady.qq.com/beauty/beauty.shtml'>美容</a></li></div>"

String ss=ss.replaceAll("<(/?\\S+)\\s*?[^<]*?(/?)>","<$1$2>")//通过只保留"<“后面的字符串,之后删除空格和后面的内容,快捷的实现去除操作(此方法通用于所有的标签去除,只需要传入不同的ss值)。

结果就是:<div><li><a>情感</a></li><li><a>美容</a></li></div>。