1 - hasChildNodes para o elemento <senha> tem de retornar o nó “testando”, por exemplo. (Não se esqueça que texto, comentários e CTYPE, mesmo que seja vazio ou só espaços em branco, conta como nó do tipo Texto.)
Portanto você tem de verificar se os nós filhos são só texto ou se você tem outros tags.
4 - Se a estrutura é em árvore, é mais fácil usar recursão.
Andre_Fonseca
thingol:
André Fonseca:
1 - Entretanto o método hasChildNodes retorna true para todos os nós, deveria retornar true apenas para o elemento endereco certo??
2 - Se é um elemento e não possui filhos recupera os atributos size e type
3 - Se é um elemento e possui filhos recupera os filhos e recupera os atributos size e type
4 - Eu preciso usar recursão aqui?
1 - hasChildNodes para o elemento <senha> tem de retornar o nó “testando”, por exemplo. (Não se esqueça que texto, comentários e CTYPE, mesmo que seja vazio ou só espaços em branco, conta como nó do tipo Texto.)
Portanto você tem de verificar se os nós filhos são só texto ou se você tem outros tags.
4 - Se a estrutura é em árvore, é mais fácil usar recursão.
minha ideia é usar mesmo recursao, se tem filhos chama o metodo novamente para o filho
[]´s
Andre_Fonseca
Consegui resolver aqui, para aqueles que tiverem interesse ficou assim:
privatevoidlistaElementos(){try{DocumentBuilderFactorydbf=DocumentBuilderFactory.newInstance();DocumentBuilderdb=dbf.newDocumentBuilder();Documentdoc=db.parse("teste.xml");NodedocElement=doc.getDocumentElement();// retorna todos os filhos de docElementNodeListroot=docElement.getChildNodes();// chama recursivamente o metodo que printa os filhosrecuperaFilhos(root);}catch(ParserConfigurationExceptione){e.printStackTrace();}catch(SAXExceptione){e.printStackTrace();}catch(IOExceptione){e.printStackTrace();}}privatevoidrecuperaFilhos(NodeListroot){Nodenode;for(inti=0;i<root.getLength();i++){node=root.item(i);if(node.getNodeType()==Node.ELEMENT_NODE){StringnodeName=node.getNodeName();System.out.print("nome:"+nodeName);if(node.hasAttributes()){Elementel=(Element)node;intsize=Integer.parseInt(el.getAttribute("size"));Stringtype=el.getAttribute("type");System.out.print(" valor:"+el.getFirstChild().getNodeValue());System.out.print(" size:"+size);System.out.println(" type:"+type);}else{System.out.println();NodeListfilhos=node.getChildNodes();recuperaFilhos(filhos);}}}}