Extrair dados de um XML

3 respostas Resolvido
diegoarantes

Olá pessoal estou tentando extrair dados de um XML usando DOM Parser porém estou com dificuldades com nós filhos.

Segue meu código Java:

`

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();

DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse("C:\\cidades.xml");

        NodeList listaCidades = doc.getElementsByTagName("SimpleData");


        String nome;
        String uf;

        for (int i = 0; i < listaCidades.getLength(); i++) {
            Node noCidade = listaCidades.item(i);

            if (noCidade.getNodeType() == Node.ELEMENT_NODE) {
                Element elementoCidade = (Element) noCidade;

                switch (elementoCidade.getAttribute("name")) {
                    case "SIGLA":
                        uf = noCidade.getTextContent();
                        break;
                    case "NOME_MUNIC":
                        nome = noCidade.getTextContent();
                        break;
                }

            }

        }

    } catch (Exception ex) {

    }`

Segue um resumo do meu código XML : <Cidades> <Placemark> <ExtendedData> <SchemaData schemaUrl="#55mu2500gsr"> <SimpleData name="SIGLA">RO</SimpleData> <SimpleData name="NOME_MUNIC">Alta Floresta D&apos;Oeste</SimpleData> </SchemaData> </ExtendedData> <Polygon> <outerBoundaryIs> <LinearRing> <coordinates> -62.18254881082289,-11.86729196449489 </coordinates> </LinearRing> </outerBoundaryIs> </Polygon> </Placemark> <Placemark> <ExtendedData> <SchemaData schemaUrl="#55mu2500gsr"> <SimpleData name="SIGLA">RO</SimpleData> <SimpleData name="NOME_MUNIC">Ariquemes</SimpleData> <SimpleData name="REGIão">Norte</SimpleData> </SchemaData> </ExtendedData> <Polygon> <outerBoundaryIs> <LinearRing> <coordinates> -62.53639745233535,-9.732236466978872 </coordinates> </LinearRing> </outerBoundaryIs> </Polygon> </Placemark> </Cidades>

Estou tendo dificuldades para recuperar os dados da Tag coordinates :confused:

3 Respostas

igomes

Me dói o coração ver até onde esse switch vai, enfim.
Hoje em dia existem jeitos muito mais elegantes/fáceis de se deserializar xml em java, o próprio conversor padrão do java (JaxB) e também o xstream, te recomendo conhece-los

TiagoDeveloper
Solucao aceita

Olha se os três primeiros arquivos “LeituraXML” te ajuda.:grin:

diegoarantes

Obrigado TiagoDeveloper, consegui chegar em meu objetivo.

Meu código ficou assim : ` try {

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        DocumentBuilder builder = factory.newDocumentBuilder();

        Document doc = builder.parse("C:\\cidades.xml");

        NodeList cidList = doc.getElementsByTagName("Placemark");

        boolean confere;

        int tamanho = cidList.getLength();

        for (int i = 0; i < tamanho; i++) {
            Node cidNode = cidList.item(i);

            Node noAtributos = cidNode.getChildNodes().item(5);
            Node noCoord = cidNode.getChildNodes().item(7);

            String coordenadas = noCoord.getChildNodes().item(1).getTextContent();
            String estado = noAtributos.getChildNodes().item(1).getChildNodes().item(5).getTextContent();
            String cidade = noAtributos.getChildNodes().item(1).getChildNodes().item(7).getTextContent();

            
        }

    } catch (Exception ex) {

    }`
Criado 11 de março de 2016
Ultima resposta 15 de mar. de 2016
Respostas 3
Participantes 3