Olá
estou freqüentando o curso de tecnólogo em informatica e consegui arrumar um estágio em programação mesmo na área de geoprocessamento (googlemap xD), mas estou enfrentando um problema
preciso carregar um endereço, que irá me retornar um arquivo .xml que contem vários dados, mas preciso apenas de 2 deles, ou seja, duas tags
procurei leitores de xml e o que pareceu ser mais bem recomendado foi o XStream, mas ainda não consegui aproveitar ele da maneira que preciso
preciso ler o .xml, buscar somente as tags que necessito e então poder manipular, imprimir esses dados, mas quando tento usar o fromXML() com o caminho do xml ou entao com uma instancia String de um xml , ele dá altos erros
como que faço para ler esse xml? e para poder recuperar só algumas tags?
velhao, aqui no guj tem um tutorial muito bacana, de uma olhada tambem no XStream - Two Minute Tutorial, é tranquilo trabalhar com XStream. Qualquer coisa posta ai os erros pra gente.
então cara, já dei uma olhada nesse tutorial, achei ele instrutivo para criar um xml, apesar de que é meio chatinho criar e arrumar todos akeles alias, ele parece bem simples para isso
o meu problema é que preciso ler um .xml, encontrar algumas tags, recuperar essas informações e imprimi-las na tela e isso é o que não estou conseguindo fazer
tentei carregando direto o xml arquivo e tambem convertendo ele pra string com um metodo que peguei de uma outra classe ai na net, mas pra ambos ele da varias exceptions
vou colocar o codigo que tentei fazer:
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.List;
import com.thoughtworks.xstream.XStream;
public class testeLeitura {
public static void main(String[] args) {
XStream xstream = new XStream();
String dadosEmXML = null;
try {
dadosEmXML = UtilsArquivo.carregar("src/mapserv.xml");
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
List dados = (List) xstream.fromXML("src/mapserv.xml");
Layer layer = (Layer) dados.get(0);
//System.out.println("nome: " + layer.getName());
}
}
esse é o inicio da exception q da:
Exception in thread “main” com.thoughtworks.xstream.io.StreamException: : only whitespace content allowed before start tag and not s (position: START_DOCUMENT seen s… @1:1)
gostaria de saber como que faz certinho para ler o xml direto, procurar uma tag e utilizar seu conteúdo
Velhao, le bem a documentação, vc precisa verifiacar se esta mapeado certinho as suas classes com o arquivo.xml.
Estou enviando um codigo que fiz aqui…vc consegue pegar as informações nas tags.
Qualquer coisa estamos ai.
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.xml.DomDriver;
public class LeituraXML {
public static StringBuffer getConteudoArquivo(File arquivo) {
StringBuffer texto = new StringBuffer();
try {
FileReader reader = new FileReader(arquivo);
BufferedReader leitor = new BufferedReader(reader);
boolean fim = false;
while (!fim) {
String linha = leitor.readLine();
if (linha == null) {
fim = true;
} else {
texto.append(linha);
}
}
reader.close();
leitor.close();
} catch (Exception e) {
e.printStackTrace();
}
return texto;
}
public static void main(String[] args) {
File arquivo = new File(
"C:\\Documents and Settings\\rodrigo.oliveira\\Desktop\\TesteArquivoXML\\teste.xml");
String conteudo = getConteudoArquivo(arquivo).toString();
XStream xstream = new XStream(new DomDriver());
xstream.processAnnotations(Aluno.class);
Aluno buscaStatusModel = (Aluno) xstream.fromXML(conteudo);
String nome = buscaStatusModel.getNome();
String curso = buscaStatusModel.getCurso();
String ano = buscaStatusModel.getAno();
System.out.println(nome);
System.out.println(curso);
System.out.println(ano);
}
}
import com.thoughtworks.xstream.annotations.XStreamAlias;
@XStreamAlias("aluno")
public class Aluno {
@XStreamAlias("nome")
private String nome;
@XStreamAlias("curso")
private String curso;
@XStreamAlias("ano")
private String ano;
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getCurso() {
return curso;
}
public void setCurso(String curso) {
this.curso = curso;
}
public String getAno() {
return ano;
}
public void setAno(String ano) {
this.ano = ano;
}
}
vlw cra, deu pra entender seu exemplo, lgl ele, o prob eh que agora vai me complicar, a estrutura do meu problema seria ± essa (pode variar co o humor da chefe xP)
e provavelmente depois disso ainda vou ter q mapear/copiar o conteudo de mais tags, uns 2 niveis abaixo das Layer para aproveitar os links
dai me vem a duvida de como prosseguir, vou ter q criar varias classes? como faço com os layers dentro de layer? como faço pq isso é uma pequena parte do arquivo que preciso ler X.x (http://www.4shared.com/file/212996107/31f40ad0/mapserv.html) vou ter que criar todas as classes de tags do arquivo inteiro?