Manipulando Arquivo XML – Parte III: XStream

Este post foi removido e transferido para a seguinte url:

http://www.mballem.com/post/manipulando-arquivo-xml-parte-iii-xstream

Anúncios

, , , ,

  1. #1 por jedi em 30/06/2011 - 7:48

    realmente é muito mais simples que os anteriores. Mais uma coisa, existe alguma ferramenta que cria metodos em java a partir de um schema ou dtd? Vi uma opção, que era ou pertence á fundação Apache mas achei muito complicado. 😉

  2. #2 por MBallem em 30/06/2011 - 11:49

    Jedi, realmente não conheço nada que faça isso. Pelo menos não consigo lembrar de nada.
    Vai até o forum GUJ e cria um post lá sobre essa sua dúvida, talvez consiga respostas mais precisas. Mesmo assim vou dar um pesquisada, se achar algo posto de dou um toque.

  3. #3 por Renato em 13/07/2011 - 10:32

    Muito bom o tutorial! Tentei utilizar JAXB, mas com esse tutotial mudei pra XStream. Só tive um problema, segui exatamente os passos que vc colocou aí, mas as listas foram geradas com as tags contendo “”. Como faço pra tirar o class=”list”?
    Obrigado! Abraço.

  4. #4 por Renato em 13/07/2011 - 10:34

    Correção: … com as tags contendo ‘ALIAS class=’list”

  5. #5 por MBallem em 13/07/2011 - 11:49

    Oi Renato,
    para eliminar esse class=’list’ só mudando o tipo de lista. No caso no tutorial eu usei Collection com ArrayList, você precisa usar ArrayList com ArrayList.
    ArrayList telefones = new ArrayList();
    Assim elemina o atributo class.

  6. #6 por giliardi em 04/11/2011 - 21:33

    ola voce poderia me enviar o projeto criado, pra mim ver as estrutura, aqui não deu certo. sou iniciante em java não entendi muito as estruturas das classes criadas 😦

  7. #7 por MBallem em 05/11/2011 - 0:45

    Olá giliardi. Eu não tenho um projeto criado.
    A estrutura é simples. Crie um projeto e adicione a eles as classes da Listagem 2 desse link.
    Depois é só adicionar os métodos citados aqui no classe: MainTest E para executar o método gerarXml003 você deve adicionar as anotações nas classes conforme a Listagem 8.

  8. #8 por Nelson em 21/03/2012 - 14:10

    Boa tarde,
    gostaria de um script que leia o xml e o renomeie para o valor de uma tag. é o xml de nota fiscal eletronica que é um numero muito grande, ele identifica a tag com o número da nota e renomeia.

  9. #9 por MBallem em 21/03/2012 - 14:37

    Boa tarde Nelson. Não entendi o que você precisas fazer.

  10. #10 por Nelson em 21/03/2012 - 21:09

    recebo os arquivos de nfe dos fornecedores, esses arquivos vem com o nome assim 43120389907950000108550070000238671000000000-procNFe.xml. salvo todos num pasta. e renomeio os arquivos para o número da nfe que no exemplo acima é 23867.xml.
    a informação 23867 esta numa tag dento do arquivo. preciso automatizar o processo de renomear os arquivos.

  11. #11 por MBallem em 21/03/2012 - 21:49

    Boa noite Nelson, dai você vai precisar usar a classe java.io.File. Nela tem um método para renomear arquivos. Tenho esse tutorial aqui no blog que fala ensina isso: https://mballem.wordpress.com/2011/03/21/manipulando-arquivo-txt-com-java/

    Porém, pelo que entendi, primeiro você vai precisar ler o XML para recuperar o n° da nfe para então renomear o arquivo.
    Para ler uma tag especifica do arquivo eu sugiro a biblioteca JDOM https://mballem.wordpress.com/2011/04/29/manipulando-arquivo-xml-%E2%80%93-parte-ii-jdom/

    Com o XStream você não consegue recuperar um único campo do XML, apenas o objeto inteiro.

  12. #12 por Paulo Ricardo em 27/04/2012 - 9:52

    Olá Jedi qual foi a opção da fundação Apache que vc achou? Estou precisando da mesma ferramenta que siga um schema.

  13. #13 por MBallem em 27/04/2012 - 10:31

    Olá Paulo Ricardo, se você tiver um schema em XSD, pode dar uma olhada nesse tutorial: http://wp.me/p1iE6J-dS
    Nele eu demonstro como gerar classes a partir de um arquivo XSD.

  14. #14 por Paulo Ricardo em 27/04/2012 - 12:05

    MBallem era exatamente isso que eu tava precisando muito obrigado e seus posts são ótimos.

  15. #15 por MBallem em 27/04/2012 - 17:20

    😀 Legal que era isso que você precisava.
    T+

  16. #16 por Gerusa em 10/08/2012 - 17:56

    Olá. Numa aplicação android, onde preciso exportar um objeto java para xml…seria o mesmo raciocínio? Obrigada.

  17. #17 por MBallem em 10/08/2012 - 19:42

    Olá Gerusa! Eu nunca trabalhei com android, mas acredito que seja sim. Mas talvez seja melhor usar o JAXB 2 que é nativo do Java, e dai não precisa adicionar uma biblioteca externa no projeto: https://mballem.wordpress.com/2012/04/02/xml-trabalhando-com-jaxb/

  18. #18 por Marcelo em 13/08/2012 - 16:12

    Rapaz, parabens. Usei e está funcionando. Apenas não consegui usar como lista de objetos. Teria como acrescentar um exemplo que lê um XML e retorna uma lista de objetos desse XML?
    Abraço

  19. #19 por MBallem em 13/08/2012 - 16:20

    Oi Marcelo, não entendi o que você quis dizer. Como assim uma lista de objetos? Seja mais especifico. Porque neste exemplo tem uma lista de Telefones, que seria uma lista de objetos do tipo Telefone. Por isso não sei se entendi o que você realmente precisa fazer.

  20. #20 por thiago em 02/04/2013 - 14:58

    Parabéns pelo tutorial, realmente é muito fácil manipular xml com xstream.
    Quando rodei o projeto localmente ele funcionou belezinha, mas quando enviei para o servidor online ele da erro no momento que vai criar o objeto xstream.
    XStream xStream = new XStream(new DomDriver());

    Estou usando o xstream-1.4.4.jar

    Será que esta faltando mais algum jar?

    Veja o erro:

    basic: PERF: AppletExecutionRunnable – applet.init() BEGIN ; jvmLaunch dt 540827 us, pluginInit dt 7609235 us, TotalTime: 8150062 us
    network: Entrada de cache encontrada [url: http://www.meusite.com.br/java/consulta/lib/xmlpull-1.1.3.1.jar, versão: null] prevalidated=false/0
    cache: Adding MemoryCache entry: http://www.meusite.com.br/java/consulta/lib/xmlpull-1.1.3.1.jar
    cache: Resource http://www.meusite.com.br/java/consulta/lib/xmlpull-1.1.3.1.jar has expired.
    network: Conectando http://www.meusite.com.br/java/consulta/lib/xmlpull-1.1.3.1.jar ao proxy=DIRECT
    network: Conectando http://www.meusite.com.br:80/ ao proxy=DIRECT
    network: Conectando http://www.meusite.com.br/java/consulta/lib/xmlpull-1.1.3.1.jar ao cookie “__utma=2770085.49214919.1364489196.1364871364.1364925275.9;
    network: Conectando http://www.meusite.com.br/java/consulta/PK%05%06%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00.class ao proxy=DIRECT
    network: Conectando http://www.meusite.com.br:80/ ao proxy=DIRECT
    network: Conectando http://www.meusite.com.br/java/consulta/PK%05%06%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00.class ao cookie “__utma=2770085.49214919.1364489196.1364871364.1364925275.9; __utmz=2770085.1364489196.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); __utmb=2770085.1.10.1364925275; __utmc=2770085”
    javax.xml.parsers.FactoryConfigurationError: Provider PK

  21. #21 por MBallem em 02/04/2013 - 22:12

    Olá thiago!

    Se você testou localmente e funcionou e quando enviou para o servidor online deu erro, podem ser duas coisas.

    Ou no servidor já tinha alguma biblioteca semelhante, mesma verão ou anteriores e está dando conflito com as da sua aplicação.

    Ou o problema pode ser alguma incompatibilidade com a versão do Java que o servidor está rodando.

    Verifique inicialmente o 1° caso. Veja se todas as bibliotecas enviadas com sua app para o servidor, já não existem no diretório de bibliotecas do próprio servidor. Depois então tente descobrir a versão do Java e instale a mesma na sua máquina local e faça os testes.

%d blogueiros gostam disto: