Utilizzando l'API Htmlparser (http://htmlparser.sourceforge.net/) ho fatto un parser che mi trova all interno di una pagina html tutti i tag di un certo tipo(in particolare il parser trova tag di tipo input,select,textarea e body).il parser funziona perfettamente a parte un problemino che non so come risolvere:
in pratica se uno dei tag cercati è all'interno di un tag div il parser non lo trova più.
quindi se
<input type="text" name="nome">
lo trova
se invece
<div class="pippo">
<input type="text" name="nome">
</div>
non lo trova +
questo è il codice qualcuno sa come aiutarmi?(semba lungo ma è semplice,fa sempre la stessa cosa)
codice:public class Parse { //creo degli oggetti vector per salvare i dati dei tag public static Vector names = new Vector(); public static Vector type = new Vector(); public static Vector tagname = new Vector(); public static int conta=0; public static int contatore=0; public static void cercatag (String path){ try { //creo varie inner class Visitor che in base al tag trovato salvano tagname,name e type nei Vector class InputVisitor extends NodeVisitor{ public void visitTag(Tag tag){ if( tag.getTagName().equals("INPUT") && !tag.getAttribute("type").equalsIgnoreCase("BUTTON") && !tag.getAttribute("type").equalsIgnoreCase("SUBMIT") ){ tagname.add(tag.getTagName()); names.add( tag.getAttribute("name")); type.add(tag.getAttribute("type")); } } } class BodyVisitor extends NodeVisitor{ public void visitTag(Tag tag){ if( tag.getTagName ().equals("BODY") ){ tagname.add(tag.getTagName()); names.add( tag.getAttribute("name")); type.add(tag.getAttribute("type")); } } } class SelectVisitor extends NodeVisitor{ public void visitTag(Tag tag){ if( tag.getTagName ().equals("SELECT") ){ tagname.add(tag.getTagName()); names.add( tag.getAttribute("name")); type.add(tag.getAttribute("type")); } } } class TextAreaVisitor extends NodeVisitor{ public void visitTag(Tag tag){ if( tag.getTagName ().equals("TEXTAREA") ){ tagname.add(tag.getTagName()); names.add( tag.getAttribute("name")); type.add(tag.getAttribute("type")); } } } //svuoto i vari Vector in modo da non ritrovarmi tag analizzati prima names.removeAllElements(); tagname.removeAllElements(); type.removeAllElements(); //creo degli oggetti(parser,nodelist) che mi permettono di parserare i tag del file Parser p = new Parser(path); NodeList list = new NodeList(); list = p.parse(null); //con la visitallnodes(visitor) viene chiamata la visittag per tutti i tag trovati //nel file e vengono salvati solo i tag relativi al visitor list.visitAllNodesWith(new BodyVisitor()); list.visitAllNodesWith(new InputVisitor()); list.visitAllNodesWith(new SelectVisitor()); list.visitAllNodesWith(new TextAreaVisitor()); } catch(Exception e ){ e.printStackTrace(); } }

Rispondi quotando

