Como ler este arquivo XML [RESOLVIDO]

Olá amigos

estou tentando ler este arquivo XML abaixo:

<?xml version="1.0" encoding="UTF-8"?>
    public static void lerXML(String nomeArquivo, Class classes) throws IOException, JDOMException {
    
       String nome = null;
       
//       URL con = classes.getResource("/"+nomeArquivo);
//       System.out.println(con);
       
//       java.net.URL imgURL = classes.getResource(path);
             
       URL u = classes.getResource("/"+nomeArquivo);  
       File f2 = new File(u.getFile());        
       
        File f = new File(u.getFile());
       
        SAXBuilder sb = new SAXBuilder();
        
        Document doc = sb.build(f);

        Element estados = doc.getRootElement();

      List elements = estados.getChildren();  
      Iterator j = elements.iterator();  
  
   //Iteramos com os elementos filhos, e filhos do dos filhos  
   while (j.hasNext()) {  
      Element element = (Element) j.next();  
      System.out.println("Sigla"+ element.getAttributeValue("ITEM/"));  
      System.out.println("Nome:"+ element.getAttributeValue("ITEM/"));  
 
   }


        
        System.out.println("ESTADOS:");    
        System.out.println("ESTADOS: " + estados.getAttributeValue("TABELA"));    
        System.out.println("-------------------------------------------------");    
        
        List<Element> siglasUF = estados.getChildren("ITEM COL1");

        for (int i = 0; i < siglasUF.size(); i++) {
            
            Element umasiglaUF = siglasUF.get(i); 

            System.out.println("SIGLAS:");    
            System.out.println("DESC: " + umasiglaUF.getValue());    
        }
        System.out.println("-------------------------------------------------");    
        
        List<Element> descUF = estados.getChildren("ITEM COL2");

        for (int i = 0; i < descUF.size(); i++) {
            
            Element umdescUF = descUF.get(i); 

            System.out.println("NOME:");    
            System.out.println("DESC: " + umdescUF.getValue());    
        }

        System.out.println("-------------------------------------------------");    
        
    }  

isto é o que aparece quando faço o debug:

elements = (org.jdom2.ContentList$FilterList) [[Element: ], [Element: ], [Element: ], [Element: ], [Element: ], [Element: ], [Element: ], [Element: ], [Element: ], [Element: ], [Element: ], [Element: ], [Element: ], [Element: ], [Element: ], [Element: ], [Element: ], [Element: ], [Element: ], [Element: ], [Element: ], [Element: ], [Element: ], [Element: ], [Element: ], [Element: ], [Element: ], [Element: ]]

já fiz inúmeras tentativas com diversos exemplos e nada.

Alguém poderia ajudar?

Silvio Guedes

Eu faria assim: criaria uma classe Estado com dois atributos String: col1 e col2. Depois:

XStream xml = new XStream(new DomDriver());
FileReader arquivo = new FileReader(caminho_e_nome_do_arquivo_xml);
List<Estado> estados =  xml.fromXML(arquivo);

É claro que vai precisar dos tratamentos de exceção, etc.

Eu uso assim há bastante tempo, gravo e leio em arquivos xml diretamente das listas de objetos.

Olá amigos

consegui resolver a leitura do XML que desejava. Segue a solução abaixo:

    public static Hashtable lerXMLUF(String nomeArquivo, Class classes,Domain domain ) throws IOException, JDOMException {
   
        String nome = null;
        URL con = classes.getResource("/" + nomeArquivo);
        System.out.println(con);
        URL u = classes.getResource("/" + nomeArquivo);
        File f2 = new File(u.getFile());
        File f = new File(u.getFile());
        SAXBuilder sb = new SAXBuilder();
        Document doc = sb.build(f);
        
        Element root = doc.getRootElement();
        Element estados = doc.getRootElement();
        System.out.println("Root element of XML document is : " + root.getName());
        System.out.println("Number of books in this XML : " + root.getChildren().size());

        List Element;
        books = root.getChildren();
        for (Element book : books) {
            if (book.getAttributeValue("CRC") != null) {
               break;
            }
            domain.addDomainPair(book.getAttributeValue("COL1"), book.getAttributeValue("COL2"));                
            domains.put(
                    domain.getDomainId(),
                    domain);
        }
        return domains;
    }

muito grato

Silvio Guedes