Sax - Boolean como variáveis de controle

Estou trabalhando com Sax em Java e me peguei em uma situação em que não sei se minha solução é a mais correta.

No XML que está sendo analisado, existe uma tag “classname” com um atributo “type” que pode conter valores como P, W, M, V, entre outros. No meu caso eu irei trabalhar apenas com os que possuem um type igual a V ou M e essa verificação eu faço no método startElement.

Meu problema está quando chego no endElement pois preciso pegar o conteúdo da tag classname, apenas quando esta for do type M ou V, conforme escrito acima.

Para fazer isto, eu criei duas várias booleanas, boOpen e viewOpen. Do jeito que fiz está funcionando porém não sei se é a solução mais adequada para isso.

Segue código abaixo:

public class WFReader extends DefaultHandler{
boolean boOpen = false;
boolean viewOpen = false;
private StringBuffer valorAtual = new StringBuffer();

public void parse() throws ParserConfigurationException, SAXException, IOException{
	SAXParserFactory spf = SAXParserFactory.newInstance();
	SAXParser parser = spf.newSAXParser(); 
	parser.parse("WF_BLPK_EINT_VS_AG_FO.xml", this );
}
	
public void startElement(String uri, String localName, String tag, Attributes atts){
	if(tag.equals("classname")){
		for (int i = 0; i < atts.getLength(); i++) {
			if(atts.getQName(i).equals("type") && atts.getValue(i).equals("M")){
				boOpen = true;
				System.out.println("BO");
			} else if(atts.getQName(i).equals("type") && atts.getValue(i).equals("V")){
				viewOpen = true;
				System.out.println("VIEW");
			}
		}
	}
}

public void endElement(String uri, String localName, String tag){
	if (tag.equals("aktion")) {
		boOpen = false;
		viewOpen = false;
	}
	if (tag.equals("classname")) {
		if (boOpen || viewOpen)
			System.out.println(valorAtual.toString().trim());
	}
	valorAtual.delete(0, valorAtual.length());
}
	
public void characters(char[] ch, int start, int length) {
	//System.out.print(String.copyValueOf(ch,start,length).trim());
	valorAtual.append(ch,start,length);
}

}