Hola. No se mucho sobre el lenguaje HTML, sin embargo antes estuve estudiando un poco sobre el tratamiento de cadenas con Java y por ahi me encontré con las clases StringTokenizer, Pattern y Matcher, las cuales sirven para el manejo de expresiones regulares y poder realizar algo parecido a lo que desea.
Espero que el siguiente fragmento de código, aunque bastante sencillo, le sirva:
private void eliminarEtiquetas(){
JTextArea textoPlano = new JTextArea( "", 5, 20 );
JTextArea etiquetas = new JTextArea( "", 5, 20 );
String palabra = "";
// Concordancia
Pattern er = Pattern.compile( "[<][#|!|-|!| |a-z|A-Z|/|=|\"]+[>]" );
Matcher matcher = er.matcher( textoHTML.getText() );
while( matcher.find() ){
etiquetas.append( matcher.group() + "\n" );
}
JOptionPane.showMessageDialog( this, new JScrollPane( etiquetas ), getTitle(),
JOptionPane.INFORMATION_MESSAGE );
// Discordancia
StringTokenizer tokens = new StringTokenizer( textoHTML.getText() );
while( tokens.hasMoreTokens() ){
palabra = tokens.nextToken();
if ( !palabra.matches( "[<][#|!|-|!| |a-z|A-Z|/|=|\"]+[>]" ) )
textoPlano.append( palabra + "\n" );
}
JOptionPane.showMessageDialog( this, new JScrollPane( textoPlano ), getTitle(),
JOptionPane.INFORMATION_MESSAGE );
Como se puede apreciar en el código en el método matcher se puede poner la expresión regular de lo que se desea aceptar y omitir en los diferentes casos. Asi pues, si algunos de los elementos que se manejan en HTML no está incluido bastará con agregarlos como parámetro de lo que se desea presentar.
Saludos.