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>