Commons-digester jakarta

4 respostas
wbsouza

No xml de origem:

<movto id="1566"> <usuario> <id>100</id> <valor>210</valor> </usuario> <usuario> <id>101</id> <valor>210</valor> </usuario> </movto>

preciso capturar o usuario como uma collection, mas nao gostaria de ter uma tag a mais no xml “usuarios” para agrupar usuario. Que metodo devo usar do Digester ?

[]s, Welington B. Souza

[/code]

4 Respostas

cv1

Voce pode ter um objeto Movimento, que contem uma Collection de Usuario, e, no XPath, vc so precisa usar o //usuario :slight_smile:

<vendendo-o-peixe>Leia meu artigo sobre commons-digester na MundoJava 1</vendendo-o-peixe>

M

/*
Não esquecer de configurar o classpath
commons-logging.jar
commons-collections.jar
commons-digester.jar
commons-beanutils.jar
xerces.jar
*/

import <a href="http://java.io">java.io</a>.<em>;

import org.apache.commons.digester.</em>;

import bean.Usuario;

import java.util.*;
public class TestUsuario

{

public static void main(String[] args)

{

try

{

Digester digester = new Digester();

digester.setValidating( false );
digester.addObjectCreate( "movto", ArrayList.class );

	digester.addObjectCreate( "movto/usuario", Usuario.class );
	digester.addBeanPropertySetter( "movto/usuario/id", "id" );
	digester.addBeanPropertySetter( "movto/usuario/valor", "valor" );

	digester.addSetNext( "movto/usuario", "add" );

	File input = new File( "usuario.xml" );
	ArrayList c = (ArrayList)digester.parse( input );

	Iterator it = c.iterator();
	while (it.hasNext())
	{
		Usuario usuario = (Usuario) it.next();
		System.out.print("id="+usuario.getId());
		System.out.print("; Value="+usuario.getValor());
		System.out.println("
");

}

}

catch( Exception exc )

{

exc.printStackTrace();

}

}
}

wbsouza
OK galera já conseguí olha aí o codigo
// momento da criação dos objetos ...
digester.addObjectCreate&#40;&quot;movto&quot;, MovtoXML.class&#41;;
digester.addObjectCreate&#40;&quot;movto/usuario&quot;, UsuarioXML.class&#41;;
		
// seta o o valor pelos atributos ...
digester.addSetProperties&#40;&quot;movto&quot;, &quot;id&quot;, &quot;id&quot;&#41;;

// pega o valor pela exepressao XPath ...
digester.addBeanPropertySetter&#40;&quot;movto/usuario/id&quot;, &quot;id&quot;&#41;;
digester.addBeanPropertySetter&#40;&quot;movto/usuario/valor&quot;, &quot;valor&quot;&#41;;

// adiciona o usuario na collection ...
digester.addSetNext&#40;&quot;movto/usuario&quot;, &quot;addUsuario&quot;&#41;;
<vendendo-o-peixe>Leia meu artigo sobre commons-digester na MundoJava 1</vendendo-o-peixe>

Ok cv, estou com a revista. Não havia entendido algumas coisas, mas agora já rolou.

[]s, Welington B. Souza

P

Duvida como usar digester pra ler xml

estou usando o main abaixo pra ler um xml faz não entra no iterator
nunca usei esse digester …

alguém pode me ajudar se estou fazendo certo …

abs

public class TestePersistenceXML {

	/**
	 * @param args
	 * @throws SAXException 
	 * @throws IOException 
	 */
	public static void main(String[] args) throws IOException, SAXException {
		// TODO Auto-generated method stub
		
		Digester digester = new Digester(); 
		digester.setValidating( false ); 
		
		digester.addObjectCreate( "persistence", ArrayList.class ); 

		digester.addObjectCreate( "persistence/persistence-unit", Persistence.class ); 
		digester.addBeanPropertySetter( "persistence/persistence-unit/description", "description" ); 
		digester.addBeanPropertySetter( "persistence/persistence-unit/provider", "provider" ); 
		
		
        File input = new File( "C:\\workspace\\TesteJPA\\build\\classes\\META-INF\\persistence.xml" ); 
		
		ArrayList c = (ArrayList)digester.parse(input); 
		
		Iterator it = c.iterator();
		
		while (it.hasNext()){
			
			Persistence persistence = (Persistence) it.next(); 
			System.out.print("Descricao   ="+persistence.getDescription()); 
			System.out.print("Provider ="+persistence.getProvider()); 
			System.out.println("	"); 
	     
	    }
		System.out.println("passo 4");
	}

}


----


public class Persistence {

	
	private String persistence;
	private String persistence_unit;
	private String description;
	private String provider;
	private String className;
	private String properties;
	
	
	public String getPersistence() {
		return persistence;
	}
-----

arquivo persistence.xml

&lt;!-- ?xml version="1.0" encoding="UTF-8"?--&gt;
&lt;persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"&gt;
	&lt;persistence-unit name="JPA9"&gt;
                &lt;description&gt;
                        Exemplo simples de persistência usando JPA. 
                &lt;/description&gt;
                &lt;provider&gt;org.hibernate.ejb.HibernatePersistence&lt;/provider&gt;
    &lt;class&gt;br.com.exemplojpa.modelo.Usuario&lt;/class&gt;
    &lt;class&gt;br.com.exemplojpa.modelo.Usuario1&lt;/class&gt;   
    &lt;class&gt;br.com.exemplojpa.modelo.NotaFiscal&lt;/class&gt;
    &lt;class&gt;br.com.exemplojpa.modelo.NotaFiscalItem&lt;/class&gt;      
    &lt;class&gt;br.com.exemplojpa.modelo.Universidade&lt;/class&gt;
    &lt;class&gt;br.com.exemplojpa.modelo.Centro&lt;/class&gt;   
    &lt;class&gt;br.com.exemplojpa.modelo.Turma&lt;/class&gt;
    &lt;class&gt;br.com.exemplojpa.modelo.Aluno&lt;/class&gt;   
    &lt;class&gt;br.com.exemplojpa.modelo.Cliente&lt;/class&gt;
    &lt;class&gt;br.com.exemplojpa.modelo.Estados&lt;/class&gt;
    &lt;class&gt;br.com.exemplojpa.modelo.Cidades&lt;/class&gt;                    
                &lt;properties&gt;
                        &lt;property name="hibernate.archive.autodetetion" value="class"/&gt;
                        &lt;property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" /&gt;
                        &lt;property name="hibernate.connection.driver_class"  value="com.mysql.jdbc.Driver" /&gt;
                        &lt;property name="hibernate.connection.username" value="root" /&gt;
                        &lt;property name="hibernate.connection.password" value="root" /&gt;
                        &lt;property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/exemplojpa" /&gt;
                        &lt;property name="hibernate.show_sql" value="true" /&gt;  
                        &lt;property name="hibernate.hbm2ddl.auto" value="update" /&gt;  
                           
                        &lt;property name="hibernate.format_sql" value="true" /&gt;   
                                       
                &lt;/properties&gt;
        &lt;/persistence-unit&gt;
Criado 7 de outubro de 2003
Ultima resposta 29 de jan. de 2009
Respostas 4
Participantes 4