Localizar palavra no arquivo texto  XML
Índice dos Fóruns » Java Básico
Autor Mensagem
brunohenrique
JavaBaby
[Avatar]

Membro desde: 12/04/2007 12:28:48
Mensagens: 84
Localização: S J Rio Preto - SP
Offline

Bom dia galera, nois de novo!!!

preciso localizar uma TAG dentro de um html e pegar o valor que vem depois do sinal de "="
o efeito seria o mesmo dos editores de texto nas ferramentes de LOCALIZAR.

acho que abrindo o html através do "IO" e localizando a Tag eu consiga resolver! (acho)

tem alguma maneira de localizar algo dentro de um arquivo texto,
sem precisar passar linha por linha e letra por letra???
[MSN]
vhuzalo
JavaBaby
[Avatar]

Membro desde: 11/07/2007 10:27:56
Mensagens: 96
Localização: Porto Alegre - RS
Offline

Cara, isso tu consegue resolver facilmente com expressões regulares.

Existe um pacote no JavaSE especial para isto java.util.Regex.

É sempre bom ter conhecimento de expressões regulares, caso não conheça, http://guia-er.sourceforge.net


Vagner Huzalo

Whiskey in the .jar

[Email] [Yahoo!] [MSN] [ICQ]
Leandro M.
JavaTeenager
[Avatar]

Membro desde: 11/02/2007 01:18:01
Mensagens: 196
Offline

Olá brunohenrique
Como você, eu estou aprendendo Java também, mas posso te ajudar nesse assunto.
Passei o domingo desenvolvendo um banco de dados em txt. no sábado tive a idéia de implementar um banco de dados utilizando a manipulação de String em arquivos txt.
O código foi feito, funciona até lagal. Essa classe que tô te passando é a classe de leitura que também faz a busca nas mesma. Resolvi fazer assim pois não estava conseguindo passar os dados lidos para outra classe.
Mas está funcionando e espero que vc entenda.

bom, vamos lá.

CLASSE PARA FAZER A LEITURA E BUSCA DOS DADOS



import java.io.*;
import javax.swing.*;
public class Ler{

String [] vetorFazBlocos = new String [1000];
String Acumulado = "";
String procura = "";
String str;
int encontrado;
int bloco = 1;
String fazBloco = "";
int totalBloco;

public void Leitura(){

try {
BufferedReader in = new BufferedReader(new FileReader("BDParaTeste.txt")); //declara o nome do arquivo

while((str = in.readLine()) != null){ //vasculha todo o arquivo e armazena os dados encontrado na variável "str"

procura = JOptionPane.showInputDialog("Procura por: "); //entrada de dados para busca

for(int i = 0; i < str.length(); i++){
Character caractere = str.charAt(i); //Aqui a estring é diluida, ou seja, os caractere do arquivo serão jogados em vetores, para possível maniplação.

fazBloco = fazBloco + caractere; //aqui eu criei blocos de alavras

if (caractere.equals('#')){ //a cada "#" encontrado, o bloco já feito acima é colocado em um vetor que será uma espécie de contagem de quantos blocos há dentro do arquivo.

vetorFazBlocos[bloco] = fazBloco; //coloca o bloco no vetor de posições
bloco++; //inicia um contagem da variável de vetor.
fazBloco = ""; // O bloco é zerado para não ficar um bloco acumuladtivo
}
}

bloco = bloco - 1; // o ultimo indice dessa variável de vetor para num campo null, por isso ifz isso
totalBloco = bloco; //mede quantos blocos existem no arquivo


for (bloco = 1; bloco < (totalBloco + 1); bloco++){ //nesse for será feito uma busca em cada bloco até encontrar o que vc quer

for(int i = 0; i < vetorFazBlocos[bloco].length(); i++){ //cada bloco é diluido para achar o que vc quer.
Character caractere = vetorFazBlocos[bloco].charAt(i);

Acumulado = Acumulado + caractere; //A variável Acumulado recebe os valores constantes no bloco.

if (procura.equals(Acumulado)){ //A variável procura é o que vc esta procurando. aqui há uma comparação se é o que vc procura com o que esta no arquivo.
System.out.println("Encontrado");
i = vetorFazBlocos[bloco].length() + 1; //iguala a variavel i (está no for) para que etsa saia quando o valor for encontrado, para o programa não faça rotações sem necessidades.

}else{

if (i == (vetorFazBlocos[bloco].length())){ // se as rotações de i for igual ao total de caracteres diluidos (contados dentro do bloco) ele mostra essa informação.
System.out.println("nao encontrado");
Acumulado = ""; // e zera essa variável para se tornar acumuladotiva
}
}
}

}
}

in.close();
}
catch (IOException e){
System.out.println("Erro de Leitura"); // possiveis erros são tratatos aqui
}
System.exit(0);
}
}


Espero que te ajude em algo
qualquer coisa me avisa
ah, outra coisa. há um método da classe String qe faz a leitura e busca de arquivo. porém esse modo eu acho mais fácil pelo programa mexer com cada caractere do seu arquivo, podendo vc comparar e buscar o que vc quiser dentro do seu arquivo.
Um abraço

Pensar == Think == um zu denken == pensare.
Não é tão complicado...
brunohenrique
JavaBaby
[Avatar]

Membro desde: 12/04/2007 12:28:48
Mensagens: 84
Localização: S J Rio Preto - SP
Offline

vhuzalo, valeu cara
da hora esse negocio de Expressoes Regulares, nunca tinha visto, e até por isso estou tendo dificuldades para criar a minha primeira expressão!

se alguem puder me ajudar?!

no meu arquivo html tem uma instrução dentro de uma tag.

eis a instrução:
"&ieGraficaFabricante=647250523112&ieContribuinte=260060785118&"

tenho que localizar "ieContribuinte" e pegar este número que esta logo após o sinal de "="

esta instrução se repete no arquivo htm,
preciso gravar no BD este número, para depois fazer uma comparação com outro htm semelhante, para ver
qual não está cadastrado ainda...

se alguém puder dar uma forcinha na montagem da ER eu agradeço
[MSN]
rdgc
JavaGuru

Membro desde: 09/05/2006 17:34:17
Mensagens: 209
Localização: São Paulo - SP
Offline

brunohenrique wrote:vhuzalo, valeu cara
da hora esse negocio de Expressoes Regulares, nunca tinha visto, e até por isso estou tendo dificuldades para criar a minha primeira expressão!

se alguem puder me ajudar?!

no meu arquivo html tem uma instrução dentro de uma tag.

eis a instrução:
"&ieGraficaFabricante=647250523112&ieContribuinte=260060785118&"

tenho que localizar "ieContribuinte" e pegar este número que esta logo após o sinal de "="

esta instrução se repete no arquivo htm,
preciso gravar no BD este número, para depois fazer uma comparação com outro htm semelhante, para ver
qual não está cadastrado ainda...

se alguém puder dar uma forcinha na montagem da ER eu agradeço


para vc montar sua ER, primeiro vc tem q saber quais são as regras desse número, como se sempre é número, qual o tamanho dele...

Se vc não quiser percorrer todos os caracteres da linha lida, segue uma maneira (tosca!) de pegar o código:


flw!
[MSN] [ICQ]
 
Índice dos Fóruns » Java Básico
Ir para:   
Powered by JForum 2.1.8 © JForum Team