Caminho do XML com \\

3 respostas
pix

Estou com um problema em conseguir localizar o XML.

Seguinte, aqui
Document doc = db.parse("\\192.168.0.253\retorno\" + codigo + "-num-lot.xml");
ele identifica como:
Exception in thread "main" java.io.FileNotFoundException: C:\java\NFE92.168.0.253\retorno1090700130132000138550010001351854632006177-num-lot.xml (O sistema não pode encontrar o caminho especificado)
File dirRetorno = new File("\\192.168.0.253\retorno");
            File fListRetorno[] = dirRetorno.listFiles();
            if (fListRetorno.length > 0) {
                for (int i = 0; i < fListRetorno.length; i++) {
                    if (fListRetorno[i].getName().equals(codigo + "-num-lot.xml")) {
                        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
                        DocumentBuilder db = dbf.newDocumentBuilder();
                        Document doc = db.parse("\\192.168.0.253\retorno\" + codigo + "-num-lot.xml");
                        System.out.println(doc.getDoctype());
                        Element elem = doc.getDocumentElement();
                        // pega todos os elementos usuario do XML
                        NodeList nl = elem.getElementsByTagName("DadosLoteNfe");
                        // percorre cada elemento usuario encontrado se usar o for
                        Element tag = (Element) nl.item(0);
                        String lote = getChildTagValue(tag, "NumeroLoteGerado");
                        JOptionPane.showMessageDialog(null, lote);
                        ConsReciNFe cons = new ConsReciNFe();
                        cons.reciboLote(lote);
                    }
                }
            }
        }
    }

    public static String getChildTagValue(Element elem, String tagName) throws Exception {
        NodeList children = elem.getElementsByTagName(tagName);
        if (children == null) {
            return null;
        }
        Element child = (Element) children.item(0);
        if (child == null) {
            return null;
        }
        return child.getFirstChild().getNodeValue();
    }

Como faço para ele ler o caminho de outra máquina mesmo?

3 Respostas

nextuser

vc ta rodando isso no windows ou em linux?

uma forma simples de resolver isso seria vc mapeando essa outra maquina na maquina local!

T

Use a versão do DocumentBuilder.parse que aceita um java.io.File, não uma String . É que o Java não entende URIs que começam por “\” e acha que é um caminho relativo ao seu programa.

Algo como:

Document doc = db.parse(new File (new File ("\\192.168.0.253\retorno"),  codigo + "-num-lot.xml"));
R

Complementando o comentário do thingol, se você quiser continuar a usar [DocumentBuilder.parse(String uri)], não deixe de incluir na URI passada para o método o protocolo através do qual o documento será lido: file:// para arquivo local, http:// para protocolo HTTP e por aí vai. Para determinar a URI de um arquivo, crie um File com o nome do arquivo e em seguida use File.toURI().toString().

Criado 21 de julho de 2009
Ultima resposta 21 de jul. de 2009
Respostas 3
Participantes 4