public void genQuest( PrintWriter out ){ Element E = (Element) nowNode ; String qid = E.getAttribute("id") ; String type = E.getAttribute("type"); String lim = E.getAttribute("limit"); // out.print("Question id: " + qid + " type: " + type + brcrlf ); writeHead( out ); NodeList nm = E.getElementsByTagName("Qtext"); out.print( nm.item(0).getFirstChild().getNodeValue() ); out.println(brcrlf ); NodeList opm = E.getElementsByTagName("Qopt"); int optCt = opm.getLength(); int typeN = lookUpType( type ); switch( typeN ){ case QMC : out.print("Choose one"); break ; case QMCM : if( lim.length() == 0 ){ out.print("Choose any number"); } else { out.print("Choose up to " + lim ); } break ; default : out.print("Unknown type"); } out.print( brcrlf ); startForm( out ); // creates <form... for( int i = 0 ; i < optCt ; i++ ){ doOption(out, opm.item(i), typeN ); } endForm( out, qid ); }
Метод genQuest в предыдущем листинге вызывает метод doOption (листинг 7.13) для каждого элемента <Qopt> . Если вы захотите добавить дополнительные типы ответов, например поле для ввода текста, вам потребуется модифицировать именно этот метод. В этом листинге также показан метод checkBl ockType, который используется для проверки атрибутов элемента Block.