Obter nomes dos atributos(tag) dos atributos(tag) do XML [Resolvido]

4 respostas
L

Olá pessoal, estou trabalhando com manipulação de arquivos XML.
Gostaria de saber se é possível criar um for para obter os nomes dos atributos dos atributos:
Eu quero percorrer todos os <ADM_GRID> e obter os nomes dos atributos que nele contém. Não quero deixar HardCode, que é como está hoje.
Não encontrei nenhum método que me possibilitasse realizar este tipo de for.

package model.entity;

import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.DocumentBuilder;
import org.w3c.dom.Document;
import org.w3c.dom.NodeList;
import org.w3c.dom.Node;
import org.w3c.dom.Element;
import java.io.File;
 
public class ImportaTabela {
 
 public static void main(String argv[]) {
 
 try {
 
    File fXmlFile = new File("c:\\teste8.xml");
    DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
    DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
    Document doc = dBuilder.parse(fXmlFile);
    doc.getDocumentElement().normalize();
 
    System.out.println("Tab grids :" + doc.getDocumentElement().getNodeName());
    NodeList nList = doc.getElementsByTagName("ADM_GRID");
    System.out.println("-----------------------");
 
    for (int temp = 0; temp < nList.getLength(); temp++) {
 
       Node nNode = nList.item(temp);	    
       if (nNode.getNodeType() == Node.ELEMENT_NODE) {
 
          Element eElement = (Element) nNode;
 
          System.out.println("Id : "  + getTagValue("GRD_ID",eElement));
          System.out.println("Nome : "  + getTagValue("GRD_NOME",eElement));
          System.out.println("VO : "  + getTagValue("GRD_VO_ALIAS",eElement));      
        }
    }
  } catch (Exception e) {
    e.printStackTrace();
  }
 }
 
 private static String getTagValue(String sTag, Element eElement){
    NodeList nlList= eElement.getElementsByTagName(sTag).item(0).getChildNodes();
    Node nValue = (Node) nlList.item(0); 
 
    return nValue.getNodeValue();    
 }
}

meu XML:

<?xml version="1.0"?>
<ROWSET>
 <ADM_GRID>
  <GRD_ID>5555</GRD_ID>
  <GRD_NOME>CampanhaPanelGridNovoPath</GRD_NOME>
  <GRD_VO_ALIAS>CampanhaPanelGrid</GRD_VO_ALIAS>
 </ADM_GRID>
 <ADM_GRID>
  <GRD_ID>5556</GRD_ID>
  <GRD_NOME>CampanhaPanelGridPermanentePath</GRD_NOME>
  <GRD_VO_ALIAS>CampanhaPanelGrid</GRD_VO_ALIAS>
 </ADM_GRID>
 <ADM_GRID>
  <GRD_ID>5551</GRD_ID>
  <GRD_NOME>CampanhaPanelGridNovoPath1</GRD_NOME>
 </ADM_GRID>
 <ADM_GRID>
  <GRD_ID>5552</GRD_ID>
  <GRD_NOME>CampanhaPanelGridNovoPath2</GRD_NOME>
  <GRD_VO_ALIAS>CampanhaPanelGrid</GRD_VO_ALIAS>
 </ADM_GRID>
</ROWSET>

4 Respostas

N

Oi!

Há exceção em seu código?
Não está funcionando?!

Abraços.

N

Oi!

public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException {
		File fXmlFile = new File("adm.xml");   
		DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();   
		DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();   
	    Document doc = dBuilder.parse(fXmlFile);   
	      
	    Element root = doc.getDocumentElement();
	    System.out.println("--> Root Element: [" + root.getNodeName() + "]");
	    NodeList nodeList = root.getElementsByTagName("ADM_GRID");
	    for(int index = 0; index < nodeList.getLength(); index++) {
	    	Node node = nodeList.item(index);
	    	if(node.getNodeName().equalsIgnoreCase("ADM_GRID")) {
		    	NodeList childrens = node.getChildNodes();
		    	System.out.println("######################################");
		    	for(int i = 0; i < childrens.getLength(); i++) {
		    		Node n = childrens.item(i);
		    		if(n.getNodeType() == Node.ELEMENT_NODE) {
		    			System.out.println("--> Node: [" + n.getNodeName() + "] | Value: [" + n.getTextContent() + "]");		    			
		    		}
		    	}
		    	System.out.println("######################################");
	    	}
	    }
	}

Resolve?

Abraços.

L

E aí nel , blz?

Perfeito, é exatamente o que eu estava precisando.
Eu comecei a trabalhar com estas bibliotecas ontem, por isso estou dando umas “viajadas”. RSRSRS
Muito Obrigado.
:smiley: :smiley: :smiley: :smiley: :smiley:
[Resolvido]

N

levimendes:
E aí nel , blz?

Perfeito, é exatamente o que eu estava precisando.
Eu comecei a trabalhar com estas bibliotecas ontem, por isso estou dando umas “viajadas”. RSRSRS
Muito Obrigado.
:smiley: :smiley: :smiley: :smiley: :D

É isso ai, que bom!
O importante é pesquisar, tentar e caso não consiga, postar a dúvida como fez.

Agora, apenas adicione ao fim do seu tópico [Resolvido] ok?
Abraços e sucesso!

Criado 1 de junho de 2011
Ultima resposta 1 de jun. de 2011
Respostas 4
Participantes 2