Galera to com um problema, eu tenho uma url que me retorna um xml, eu quero salvar esse xml em um arquivo alguem poderia me ajudar ? um codigo de exemplo. =[ por favor.
Download de um xml
32 Respostas
Tanto faz se é um arquivo XML ou não, use java.net.URLConnection para conseguir obter os dados.
Como não sei se você precisa obter esse arquivo via POST ou GET, não vou dar muitos detalhes; basta procurar por URLConnection que você vai achar muitos exemplos. Procure primeiro em exampledepot.com.
voce teria um codigo em exemplo onde eu poderia fazer isso.
Fala snonca, ainda não conseguiu safar esse download? hehe
Veja se esse link te ajuda. Flws
fala renzo,
hehehehehe, ta igual a minha sogra quando pega no pé nao sai mais, heheheheh, pois e cara , ta complicado isso, de mais msm, ja to puto por nao consegui fazer isso, mais vo da uma olha no link sim, valeww
Passa o link do xml que vc está tentando baixar, assim eu tento fazer por aqui tb…
o link e esse, eu tenho que baixar ele e salvar em um arquino na minha maquina, ai eu vo usar o parser que vc me mandou lendo o arquivo salvo. entendo ?
o link e esse
link errado.
e esse aqui
vv
Olha aí a classe. Como eu já tinha te dito um tempo atrás, vc só precisava passar um InputStream como argumento. Olhá aí:
public class LeitorXMLTeste {
/**
* @param args
*/
public static void main(String[] args) {
SAXParser parser=null;
try {
parser= SAXParserFactory.newInstance().newSAXParser();
} catch (ParserConfigurationException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
}
if(parser!=null){
try {
URL url=new URL("http://pilotos.aileader.com.br/pietro/select?q=pol...llcats=0&ling=none&wt=standard");
InputSource input=new InputSource(url.openStream());//aqui vc pode passar o seu inputStream como parametro
LeitorXML leitor= new LeitorXML();
parser.parse(input,new JColtraneXMLHandler(leitor));
Produto p=leitor.getProduto();
System.out.println("nome: "+p.getNome());
System.out.println("preço: "+p.getPreco());
System.out.println("descricao: "+p.getDescricao());
} catch (SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
public class LeitorXML {
private Produto produto;
public LeitorXML(){
produto=new Produto();
}
// @StartElement
// private void lerNomeEPreco(@CurrentBranch String brunch){
// System.out.println(brunch);
// }
@EndElement
private void lerDescricao(@CurrentBranch String brunch,@Body String descricao){
System.out.println(brunch);
System.out.println(descricao);
}
public Produto getProduto(){
return produto;
}
}
Mas uma coisa eu nao entendi, quando pego o xml via Java, os dados são diferentes daquele que vejo quando coloco a url no meu browser. e isso eu já não entendi pq...
Talvez a obtenção seja via POST e nao GET como o thingol falou…
esse xml nada mais e do que retorno, de um busca que o cliente faz numa pagina igual a do google, quando o cliente faz a busca, vem o html, mais eu estou buscando o xml dos resultados.
Bom, se o fato é que a classe está fazendo o parser do XML que a URL está retornando, então ve aí se isso supre sua necessidade…
Vi o erro aki, o link ficou comprimido no Guj, entao olha aí a classe corrigida:
public class LeitorXMLTeste {
/**
* @param args
*/
public static void main(String[] args) {
SAXParser parser=null;
try {
parser= SAXParserFactory.newInstance().newSAXParser();
} catch (ParserConfigurationException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
}
if(parser!=null){
try {
URL url=new URL("http://pilotos.aileader.com.br/pietro/select?q=politica&allcats=0&ling=none&wt=standard");
InputSource input=new InputSource(url.openStream());//aqui vc pode passar o seu inputStream como parametro
LeitorXML leitor= new LeitorXML();
parser.parse(input,new JColtraneXMLHandler(leitor));
// Produto p=leitor.getProduto();
// System.out.println("nome: "+p.getNome());
// System.out.println("preço: "+p.getPreco());
// System.out.println("descricao: "+p.getDescricao());
} catch (SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
Espero que agora vc safe isso logo
vc fez, os system.out.print daquela xml que vc criou, como ficaria os parametros desse xml que ti passei ?
vc consegue entender a estrutura desse xml ?
A última classe que coloquei no post faz praticamente um println…
Me diz o que vc quer do XML, não seriam os códigos dos pilotos?
o Arquivo e o Texto, que seria os pilotos.
essa e a pagina retornada em html,
aquele xml e essa pagina.
O que vc quer dizer com arquivo e texto? explique melhor, se não fica difícil te ajudar…
arquivo e a url ta, esse link que passei agora ele e nada mais que o xml dessa pagina ai que ta postada,
como e a estrutura desse xml pra min colocar aqui no codigo , qual texto vai aparecer na minha pagina.
na quele parser que vc me enviou com as informações do seu xml, tinha preço , nome , descrição, no meu xml, tenho que retorna os arquivos e texto, mais nao funciona.
como seria o parser com esse xml que ti passei ? =[
Olha, vc tem que se informar de como estão distribuidas as informações que vc quer nesse xml. Eu considerei como arquivo as informações .jpg que estão no XML e texto a informação do .rtf que estão no texto. Assim eu escrevi a seguinte classe:
public class LeitorXML {
private Produto produto;
public LeitorXML(){
produto=new Produto();
}
@BeforeElement(tag="arr",attributes=@ContainAttribute("ctrl##page_path"), elementDeep=1)
@EndElement(tag="str")
private void lerPathFoto(@CurrentBranch String brunch,@Body String descricao){
System.out.println(brunch);
System.out.println(descricao);
}
@BeforeElement(tag="arr",attributes=@ContainAttribute("ctrl##rtf_file_path"), elementDeep=1)
@EndElement(tag="str")
private void lerPathArquivo(@CurrentBranch String brunch,@Body String descricao){
System.out.println(brunch);
System.out.println(descricao);
}
public Produto getProduto(){
return produto;
}
}
Ela retorna o seguinte resultado:
/response/lst/lst/arr/str/
00000002/00000052/00000052.rtf
/response/lst/lst/arr/str/
435555535\1219956710306.jpeg
/response/lst/lst/arr/str/
00000002/00000108/00000108.rtf
/response/lst/lst/arr/str/
436634053\1219956726073.jpeg
/response/lst/lst/arr/str/
00000001/00000019/00000019.rtf
/response/lst/lst/arr/str/
409046350\1219956639838.jpeg
/response/lst/lst/arr/str/
00000001/00000020/00000020.rtf
/response/lst/lst/arr/str/
409700015\1219956640712.jpeg
/response/lst/lst/arr/str/
00000001/00000021/00000021.rtf
/response/lst/lst/arr/str/
409702780\1219956640963.jpeg
/response/lst/lst/arr/str/
00000001/00000022/00000022.rtf
/response/lst/lst/arr/str/
409704857\1219956641213.jpeg
/response/lst/lst/arr/str/
00000002/00000107/00000107.rtf
/response/lst/lst/arr/str/
436631861\1219956725776.jpeg
/response/lst/lst/arr/str/
00000003/00000081/00000081.rtf
/response/lst/lst/arr/str/
441221811\1219956775009.jpeg
/response/lst/lst/arr/str/
00000003/00000133/00000133.rtf
/response/lst/lst/arr/str/
442205846\1219956787088.jpeg
/response/lst/lst/arr/str/
00000003/00000134/00000134.rtf
/response/lst/lst/arr/str/
442228719\1219956787306.jpeg
mas então, eu não sei se ele mostra esse conteudo buscando nesses arquivos, então vc terá que se informar sobre isso e sobre como as informações estão dispostas no XML.
tudo que estiver em ctrl nao deverar aparecer apenas os que estao como show#texto e show#arquivo =D
vc tirou muito duvida minha =D
entendeu ?
Olha aí a classe com duas pequenas alterações:
public class LeitorXML {
private Produto produto;
public LeitorXML(){
produto=new Produto();
}
@BeforeElement(tag="arr",attributes=@ContainAttribute("show##Texto.*"), elementDeep=1)
@EndElement(tag="str")
private void lerPathTexto(@CurrentBranch String brunch,@Body String descricao){
System.out.println(brunch);
System.out.println(descricao);
}
@BeforeElement(tag="arr",attributes=@ContainAttribute("show##Arquivo.*"), elementDeep=1)
@EndElement(tag="str")
private void lerPathArquivo(@CurrentBranch String brunch,@Body String descricao){
System.out.println(brunch);
System.out.println(descricao);
}
public Produto getProduto(){
return produto;
}
}
Resultado da execução:
/response/lst/lst/arr/str/
de se ampliar as ações da Política Industrial, de modo a considerar não somente as ações vinculadas
/response/lst/lst/arr/str/
00000052.TIF
/response/lst/lst/arr/str/
;- : - ,- Assegurar o cumprimento dos procedimentos, requisitos e Política de SSSMA; Estimular â melhoria contínua
/response/lst/lst/arr/str/
-do SGA em suas áreas; Conhecer e contribuirpara a realização da Política de SSSMA da Eli Lilly; Cumprir
/response/lst/lst/arr/str/
00000108.TIF
/response/lst/lst/arr/str/
sobre política de privacidade e uso, clique aqui. Atualize sua página g. Preparar pagina) 2ãy pará Impressão http
/response/lst/lst/arr/str/
00000019.TIF
/response/lst/lst/arr/str/
de Brasília). Voltar A SRF agradece a sua visita. Para informações sobre política de privacidade e uso, clique
/response/lst/lst/arr/str/
00000020.TIF
/response/lst/lst/arr/str/
a sua visita. Para informações sobre política de privacidade e uso, clique aqui. Atualize sua página Preparar
/response/lst/lst/arr/str/
00000021.TIF
/response/lst/lst/arr/str/
sobre política de privacidade e uso, clique aqui. Atualize sua página 3. Preparar página §7 para impressão http
/response/lst/lst/arr/str/
00000022.TIF
/response/lst/lst/arr/str/
, informatização e outras alternativas. " ¦ " Conhecer e contribuir para a realização :da Política de SSSMA da Eli
/response/lst/lst/arr/str/
00000107.TIF
/response/lst/lst/arr/str/
sobre política de privacidade e uso, clique aqui. Atualize sua página http://www.receita.fazenda.gov.br
/response/lst/lst/arr/str/
00000081.TIF
/response/lst/lst/arr/str/
67 moléculas em 147 apresentações. íTopo i+8Sandoz2005-- i+ Nota Legal i+ Política de Privacidade w
/response/lst/lst/arr/str/
00000133.TIF
/response/lst/lst/arr/str/
° lugar. Hopo h- ÍPSandoz 2005 ¦? Nola Legal i+ Política de Privacidade i+ Empresa do Grupo Novartis http
/response/lst/lst/arr/str/
00000134.TIF
perceba que no corpo dos texto eles deixam uma tag de formatação html, que é o que dá o realce na palavra procurada...
entendi, muito obrigado renzo, vc e o cara quem sabe um dia nao tenho essa mesma abilidade que vc tem com java. espero um dia poder ajudar vc em algo.
me add no msn, [email removido]
Fica tranquilo cara, eu nem tenho essa habilidade toda, o que eu sei aprendi batendo cabeça, do mesmo jeito que vc está agora. Só não esquece de me dar 10% do que vc ganhar com esse projeto aí…rs. Brincadeira à parte, fala bem do meu framework de processamento xml pro pessoal…hehe.
fica tranquilo, que ja tem duas pessoas usuando seu frameworks, aqui no CESAR. abraços e valeu.