miércoles, 28 de diciembre de 2011
Python, ejemplos prácticos no. 2
1. Programa que acepte un año escrito en cifras arábigas y visualice el año en números romanos, dentro del rango 1000-1999
'''
autor: yo
fecha: 24 de diciembre de 2011
'''
anyo,anyo_desglosado,aux=0,0,0
romano=""
while anyo<=0 and anyo<=1999:
anyo=int(raw_input('Introduce año:'))
print "Año en arábigo [",anyo,"]"
print "\nAño desglosado: "
if (anyo>=1000):
anyo_desglosado=anyo%1000
romano=romano+"M"
aux=1000
print "arábigo:",aux
if (anyo_desglosado>=900):
anyo_desglosado=anyo_desglosado%900
romano=romano+"CM"
aux=900
print "arábigo:",aux
if (anyo_desglosado>=800):
anyo_desglosado=anyo_desglosado%800
romano=romano+"DCCC"
aux=800
print "arábigo:",aux
if (anyo_desglosado>=700):
anyo_desglosado=anyo_desglosado%700
romano=romano+"DCC"
aux=700
print "arábigo:",aux
if (anyo_desglosado>=600):
anyo_desglosado=anyo_desglosado%600
romano=romano+"DC"
aux=600
print "arábigo:",aux
if (anyo_desglosado>=500):
anyo_desglosado=anyo_desglosado%500
romano=romano+"D"
aux=500
print "arábigo:",aux
if (anyo_desglosado>=400):
anyo_desglosado=anyo_desglosado%400
romano=romano+"CD"
aux=400
print "arábigo:",aux
if (anyo_desglosado>=300):
anyo_desglosado=anyo_desglosado%300
romano=romano+"CCC"
aux=300
print "arábigo:",aux
if (anyo_desglosado>=200):
anyo_desglosado=anyo_desglosado%200
romano=romano+"CC"
aux=200
print "arábigo:",aux
if (anyo_desglosado>=100):
anyo_desglosado=anyo_desglosado%100
romano=romano+"C"
aux=100
print "arábigo:",aux
if (anyo_desglosado>=90):
anyo_desglosado=anyo_desglosado%90
romano=romano+"XC"
aux=90
print "arábigo:",aux
if (anyo_desglosado>=80):
anyo_desglosado=anyo_desglosado%80
romano=romano+"LXXX"
aux=80
print "arábigo:",aux
if (anyo_desglosado>=70):
anyo_desglosado=anyo_desglosado%70
romano=romano+"LXX"
aux=70
print "arábigo:",aux
if (anyo_desglosado>=60):
anyo_desglosado=anyo_desglosado%60
romano=romano+"LX"
aux=60
print "arábigo:",aux
if (anyo_desglosado>=50):
anyo_desglosado=anyo_desglosado%50
romano=romano+"L"
aux=50
print "arábigo:",aux
if (anyo_desglosado>=40):
anyo_desglosado=anyo_desglosado%40
romano=romano+"XL"
aux=40
print "arábigo:",aux
if (anyo_desglosado>=30):
anyo_desglosado=anyo_desglosado%30
romano=romano+"XXX"
aux=30
print "arábigo:",aux
if (anyo_desglosado>=20):
anyo_desglosado=anyo_desglosado%20
romano=romano+"XX"
aux=20
print "arábigo:",aux
if (anyo_desglosado>=10):
anyo_desglosado=anyo_desglosado%10
romano=romano+"X"
aux=10
print "arábigo:",aux
if (anyo_desglosado==9):
anyo_desglosado=anyo_desglosado%9
romano=romano+"IX"
aux=9
print "arábigo:",aux
if (anyo_desglosado==8):
anyo_desglosado=anyo_desglosado%8
romano=romano+"VIII"
aux=8
print "arábigo:",aux
if (anyo_desglosado==7):
anyo_desglosado=anyo_desglosado%7
romano=romano+"VII"
aux=7
print "arábigo:",aux
if (anyo_desglosado==6):
anyo_desglosado=anyo_desglosado%6
romano=romano+"VI"
aux=6
print "arábigo:",aux
if (anyo_desglosado==5):
anyo_desglosado=anyo_desglosado%5
romano=romano+"V"
aux=5
print "arábigo:",aux
if (anyo_desglosado==4):
anyo_desglosado=anyo_desglosado%4
romano=romano+"IV"
aux=4
print "arábigo:",aux
if (anyo_desglosado==3):
anyo_desglosado=anyo_desglosado%3
romano=romano+"III"
aux=3
print "arábigo:",aux
if (anyo_desglosado==2):
anyo_desglosado=anyo_desglosado%2
romano=romano+"II"
aux=2
print "arábigo:",aux
if (anyo_desglosado==1):
anyo_desglosado=anyo_desglosado%1
romano=romano+"I"
aux=1
print "arábigo:",aux
print "\nAño en romano: ",romano
2. Obtener salario nuevo
#código Python
'''
autor: yo
fecha : viernes 9 de diciembre del 2011
'''
#función que calcula el nuevo salario --> ganancia
def obtenerGanancia(m,p):
return m+(m*(p/100))
#función que calcula el nuevo salario --> perdida
def obtenerPerdida(m,p):
return m-(p*(p/100))
#variables
salir="s"
monto,porcentaje=0,0
opc=0
while salir == "s":
print "***************************************"
print "[Programa que calcula el salario nuevo]"
print "***************************************"
print ""
#menú
print "1. Obtener ganancia"
print "2. Obtener pérdida"
opc=int(raw_input('Introduce opción: '))
#obtener ganancia
if opc==1:
print "[Obtener ganancia]"
monto=float(raw_input('Monto: '))
print "$",monto,"\n"
porcentaje=float(raw_input('Porcentaje:'))
print porcentaje,"% \n"
print "Ganancia: $",obtenerGanancia(monto,porcentaje)
print ""
#obtener pérdida
if opc==2:
print "[Obtener pérdida]"
monto=float(raw_input('Monto: '))
print "$",monto,"\n"
porcentaje=float(raw_input('Porcentaje:'))
print porcentaje,"% \n"
print "Ganancia: $",obtenerPerdida(monto,porcentaje)
print ""
else:
print "opción inválida"
salir=raw_input('Desea hacer otra operación? (s/n):')
print ""
if salir=="n":
print "adios"
lunes, 26 de diciembre de 2011
Tarot básico en Python
Aqui el código escrito en Python para calcular tu carta del tarot.
def obtenerArcano(arc):
if arc==1:
return "El Mago"
if arc==2:
return "La Papisa"
if arc==3:
return "La Emperatriz"
if arc==4:
return "El Emperador"
if arc==5:
return "El Papa"
if arc==6:
return "El Enamorado"
if arc==7:
return "El Carro"
if arc==8:
return "La Justicia"
if arc==9:
return "El Ermitaño"
if arc==10:
return "La Rueda"
if arc==11:
return "La Fuerza"
if arc==12:
return "El Colgado"
if arc==13:
return "La Muerte"
if arc==14:
return "La Templanza"
if arc==15:
return "El Diablo"
if arc==16:
return "La Torre"
if arc==17:
return "La Estrella"
if arc==18:
return "La Luna"
if arc==19:
return "El Sol"
if arc==20:
return "El Juicio"
if arc==21:
return "El Mundo"
if arc==22:
return "El Loco"
dia_nac=0
mes_nac=""
anyo_nuevo=0
aux=0
suma,i=0,0
cadena=""
sumaTotal=0
dia_nac=int(raw_input('Dia de nacimiento:'))
mes_nac=raw_input('Mes de nacimiento:')
anyo_nuevo=int(raw_input('Año nuevo:'))
print "Datos leidos:\n"
print "\tDía de nacimiento || Mes de nacimiento || Año nuevo que empieza"
print "\t",dia_nac," || ",mes_nac," || ",anyo_nuevo
print ""
if mes_nac=="diciembre":
aux=12
suma=dia_nac+aux+anyo_nuevo
print "Suma [",suma,"]"
cadena=str(suma)
print "Cadena: [",cadena,"]"
print list(cadena)
for i in range(len(cadena)):
sumaTotal=sumaTotal+int(cadena[i])
print "Número: ",sumaTotal
print "Te corresponde el signo del ",obtenerArcano(sumaTotal)
if mes_nac=="noviembre":
aux=11
suma=dia_nac+aux+anyo_nuevo
print "Suma [",suma,"]"
cadena=str(suma)
print "Cadena: [",cadena,"]"
print list(cadena)
for i in range(len(cadena)):
sumaTotal=sumaTotal+int(cadena[i])
print "Número: ",sumaTotal
print "Te corresponde el signo del ",obtenerArcano(sumaTotal)
if mes_nac=="octubre":
aux=10
suma=dia_nac+aux+anyo_nuevo
print "Suma [",suma,"]"
cadena=str(suma)
print "Cadena: [",cadena,"]"
print list(cadena)
for i in range(len(cadena)):
sumaTotal=sumaTotal+int(cadena[i])
print "Número: ",sumaTotal
print "Te corresponde el signo del ",obtenerArcano(sumaTotal)
if mes_nac=="septiembre":
aux=9
suma=dia_nac+aux+anyo_nuevo
print "Suma [",suma,"]"
cadena=str(suma)
print "Cadena: [",cadena,"]"
print list(cadena)
for i in range(len(cadena)):
sumaTotal=sumaTotal+int(cadena[i])
print "Número: ",sumaTotal
print "Te corresponde el signo del ",obtenerArcano(sumaTotal)
if mes_nac=="agosto":
aux=8
suma=dia_nac+aux+anyo_nuevo
print "Suma [",suma,"]"
cadena=str(suma)
print "Cadena: [",cadena,"]"
print list(cadena)
for i in range(len(cadena)):
sumaTotal=sumaTotal+int(cadena[i])
print "Número: ",sumaTotal
print "Te corresponde el signo del ",obtenerArcano(sumaTotal)
if mes_nac=="julio":
aux=7
suma=dia_nac+aux+anyo_nuevo
print "Suma [",suma,"]"
cadena=str(suma)
print "Cadena: [",cadena,"]"
print list(cadena)
for i in range(len(cadena)):
sumaTotal=sumaTotal+int(cadena[i])
print "Número: ",sumaTotal
print "Te corresponde el signo del ",obtenerArcano(sumaTotal)
if mes_nac=="junio":
aux=6
suma=dia_nac+aux+anyo_nuevo
print "Suma [",suma,"]"
cadena=str(suma)
print "Cadena: [",cadena,"]"
print list(cadena)
for i in range(len(cadena)):
sumaTotal=sumaTotal+int(cadena[i])
print "Número: ",sumaTotal
print "Te corresponde el signo del ",obtenerArcano(sumaTotal)
if mes_nac=="mayo":
aux=5
suma=dia_nac+aux+anyo_nuevo
print "Suma [",suma,"]"
cadena=str(suma)
print "Cadena: [",cadena,"]"
print list(cadena)
for i in range(len(cadena)):
sumaTotal=sumaTotal+int(cadena[i])
print "Número: ",sumaTotal
print "Te corresponde el signo del ",obtenerArcano(sumaTotal)
if mes_nac=="abril":
aux=4
suma=dia_nac+aux+anyo_nuevo
print "Suma [",suma,"]"
cadena=str(suma)
print "Cadena: [",cadena,"]"
print list(cadena)
for i in range(len(cadena)):
sumaTotal=sumaTotal+int(cadena[i])
print "Número: ",sumaTotal
print "Te corresponde el signo del ",obtenerArcano(sumaTotal)
if mes_nac=="marzo":
aux=3
suma=dia_nac+aux+anyo_nuevo
print "Suma [",suma,"]"
cadena=str(suma)
print "Cadena: [",cadena,"]"
print list(cadena)
for i in range(len(cadena)):
sumaTotal=sumaTotal+int(cadena[i])
print "Número: ",sumaTotal
print "Te corresponde el signo del ",obtenerArcano(sumaTotal)
if mes_nac=="febrero":
aux=2
suma=dia_nac+aux+anyo_nuevo
print "Suma [",suma,"]"
cadena=str(suma)
print "Cadena: [",cadena,"]"
print list(cadena)
for i in range(len(cadena)):
sumaTotal=sumaTotal+int(cadena[i])
print "Número: ",sumaTotal
print "Te corresponde el signo del ",obtenerArcano(sumaTotal)
if mes_nac=="enero":
aux=1
suma=dia_nac+aux+anyo_nuevo
print "Suma [",suma,"]"
cadena=str(suma)
print "Cadena: [",cadena,"]"
print list(cadena)
for i in range(len(cadena)):
sumaTotal=sumaTotal+int(cadena[i])
print "Número: ",sumaTotal
print "Te corresponde el signo del ",obtenerArcano(sumaTotal)
def obtenerArcano(arc):
if arc==1:
return "El Mago"
if arc==2:
return "La Papisa"
if arc==3:
return "La Emperatriz"
if arc==4:
return "El Emperador"
if arc==5:
return "El Papa"
if arc==6:
return "El Enamorado"
if arc==7:
return "El Carro"
if arc==8:
return "La Justicia"
if arc==9:
return "El Ermitaño"
if arc==10:
return "La Rueda"
if arc==11:
return "La Fuerza"
if arc==12:
return "El Colgado"
if arc==13:
return "La Muerte"
if arc==14:
return "La Templanza"
if arc==15:
return "El Diablo"
if arc==16:
return "La Torre"
if arc==17:
return "La Estrella"
if arc==18:
return "La Luna"
if arc==19:
return "El Sol"
if arc==20:
return "El Juicio"
if arc==21:
return "El Mundo"
if arc==22:
return "El Loco"
dia_nac=0
mes_nac=""
anyo_nuevo=0
aux=0
suma,i=0,0
cadena=""
sumaTotal=0
dia_nac=int(raw_input('Dia de nacimiento:'))
mes_nac=raw_input('Mes de nacimiento:')
anyo_nuevo=int(raw_input('Año nuevo:'))
print "Datos leidos:\n"
print "\tDía de nacimiento || Mes de nacimiento || Año nuevo que empieza"
print "\t",dia_nac," || ",mes_nac," || ",anyo_nuevo
print ""
if mes_nac=="diciembre":
aux=12
suma=dia_nac+aux+anyo_nuevo
print "Suma [",suma,"]"
cadena=str(suma)
print "Cadena: [",cadena,"]"
print list(cadena)
for i in range(len(cadena)):
sumaTotal=sumaTotal+int(cadena[i])
print "Número: ",sumaTotal
print "Te corresponde el signo del ",obtenerArcano(sumaTotal)
if mes_nac=="noviembre":
aux=11
suma=dia_nac+aux+anyo_nuevo
print "Suma [",suma,"]"
cadena=str(suma)
print "Cadena: [",cadena,"]"
print list(cadena)
for i in range(len(cadena)):
sumaTotal=sumaTotal+int(cadena[i])
print "Número: ",sumaTotal
print "Te corresponde el signo del ",obtenerArcano(sumaTotal)
if mes_nac=="octubre":
aux=10
suma=dia_nac+aux+anyo_nuevo
print "Suma [",suma,"]"
cadena=str(suma)
print "Cadena: [",cadena,"]"
print list(cadena)
for i in range(len(cadena)):
sumaTotal=sumaTotal+int(cadena[i])
print "Número: ",sumaTotal
print "Te corresponde el signo del ",obtenerArcano(sumaTotal)
if mes_nac=="septiembre":
aux=9
suma=dia_nac+aux+anyo_nuevo
print "Suma [",suma,"]"
cadena=str(suma)
print "Cadena: [",cadena,"]"
print list(cadena)
for i in range(len(cadena)):
sumaTotal=sumaTotal+int(cadena[i])
print "Número: ",sumaTotal
print "Te corresponde el signo del ",obtenerArcano(sumaTotal)
if mes_nac=="agosto":
aux=8
suma=dia_nac+aux+anyo_nuevo
print "Suma [",suma,"]"
cadena=str(suma)
print "Cadena: [",cadena,"]"
print list(cadena)
for i in range(len(cadena)):
sumaTotal=sumaTotal+int(cadena[i])
print "Número: ",sumaTotal
print "Te corresponde el signo del ",obtenerArcano(sumaTotal)
if mes_nac=="julio":
aux=7
suma=dia_nac+aux+anyo_nuevo
print "Suma [",suma,"]"
cadena=str(suma)
print "Cadena: [",cadena,"]"
print list(cadena)
for i in range(len(cadena)):
sumaTotal=sumaTotal+int(cadena[i])
print "Número: ",sumaTotal
print "Te corresponde el signo del ",obtenerArcano(sumaTotal)
if mes_nac=="junio":
aux=6
suma=dia_nac+aux+anyo_nuevo
print "Suma [",suma,"]"
cadena=str(suma)
print "Cadena: [",cadena,"]"
print list(cadena)
for i in range(len(cadena)):
sumaTotal=sumaTotal+int(cadena[i])
print "Número: ",sumaTotal
print "Te corresponde el signo del ",obtenerArcano(sumaTotal)
if mes_nac=="mayo":
aux=5
suma=dia_nac+aux+anyo_nuevo
print "Suma [",suma,"]"
cadena=str(suma)
print "Cadena: [",cadena,"]"
print list(cadena)
for i in range(len(cadena)):
sumaTotal=sumaTotal+int(cadena[i])
print "Número: ",sumaTotal
print "Te corresponde el signo del ",obtenerArcano(sumaTotal)
if mes_nac=="abril":
aux=4
suma=dia_nac+aux+anyo_nuevo
print "Suma [",suma,"]"
cadena=str(suma)
print "Cadena: [",cadena,"]"
print list(cadena)
for i in range(len(cadena)):
sumaTotal=sumaTotal+int(cadena[i])
print "Número: ",sumaTotal
print "Te corresponde el signo del ",obtenerArcano(sumaTotal)
if mes_nac=="marzo":
aux=3
suma=dia_nac+aux+anyo_nuevo
print "Suma [",suma,"]"
cadena=str(suma)
print "Cadena: [",cadena,"]"
print list(cadena)
for i in range(len(cadena)):
sumaTotal=sumaTotal+int(cadena[i])
print "Número: ",sumaTotal
print "Te corresponde el signo del ",obtenerArcano(sumaTotal)
if mes_nac=="febrero":
aux=2
suma=dia_nac+aux+anyo_nuevo
print "Suma [",suma,"]"
cadena=str(suma)
print "Cadena: [",cadena,"]"
print list(cadena)
for i in range(len(cadena)):
sumaTotal=sumaTotal+int(cadena[i])
print "Número: ",sumaTotal
print "Te corresponde el signo del ",obtenerArcano(sumaTotal)
if mes_nac=="enero":
aux=1
suma=dia_nac+aux+anyo_nuevo
print "Suma [",suma,"]"
cadena=str(suma)
print "Cadena: [",cadena,"]"
print list(cadena)
for i in range(len(cadena)):
sumaTotal=sumaTotal+int(cadena[i])
print "Número: ",sumaTotal
print "Te corresponde el signo del ",obtenerArcano(sumaTotal)
domingo, 18 de diciembre de 2011
JavaServer Faces: ejemplos básicos
JavaServer Faces
Es una framework (ya tiene varios años que apareció) que nos permite crear aplicaciones web muy parecidas a las de escritorio. JSF trabaja en base a eventos (algo parecido a Swing), mientras que JSP en base a petición(es)/respuesta(s).Existen otras variantes como:
- RichFaces
- PrimeFaces
- OpenFaces
- IceFaces
- MyFaces
Enlaces
OpenFaceshttp://openfaces.org/documentation/developersGuide/index.html
http://openfaces.org/demo/overview/homepage.jsf
RichFaces
http://docs.jboss.org/richfaces/latest_3_3_X/en/devguide/html_single/
http://livedemo.exadel.com/richfaces-demo/index.jsp
PrimeFaces
http://www.primefaces.org/documentation.html
http://www.primefaces.org/showcase/ui/home.jsf
IceFaces
http://www.icefaces.org/main/resources/
http://www.icefaces.org/main/demos/
MyFaces
http://myfaces.apache.org/docindex.html
Cada una de ellas con diversos componentes muy útiles. Hace algunos meses decidi dejar de usar JSP y probar JSF. No me arrepiento. Creo que ahora escribo código más limpio y legible.
EL: Expression Language
Es un lenguaje especial que nos permite acceder directamente a las propiedades o métodos de los beans desde el código de las páginas (jsp y/o xhtml).Ejemplo
<h3>
#{"Este es un ejemplo"}</h3>
#{"Este es un ejemplo"}</h3>
Este es un ejemplo
Otro ejemplo23+64= #{23+65}
En fin, se pueden realizar todas las operaciones aritméticas y lógicas al igual que en JSP.
ManagedBean
Algo parecido a los Servlets, es una clase java que recibe peticiones y procesa resultados de las páginas web.Faces config
Es un documento xml en el cual defines los beans de tu aplicación. También defines las "reglas de navegación"entre tus páginas . Es importante tenerlo para saber que página debe mostrarse de acuerdo al suceso/evento que la invoca.Bueno, ahora un ejemplo sencillo.
1. Crear una aplicación que genere un número aleatorio, y que el usuario trate de adivinarlo.
Primero creo el Bean
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package org.primefaces.ejemplos; import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import java.util.Random;
/**
*
* */
@ManagedBean
@RequestScoped
public class RandomBean {
private int numero;
/** Creates a new instance of RandomBean */
public RandomBean() {
}
/**
* @return the numero
*/
public int getNumero() {
return numero;
}
/**
* @param numero the numero to set
*/
public void setNumero(int numero) {
this.numero = numero;
}
public String ir_calculo(){
return "calculo02";
}
public int obtenerNumero(){
return (int)(Math.random()*100);
}
}
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package org.primefaces.ejemplos; import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import java.util.Random;
/**
*
* */
@ManagedBean
@RequestScoped
public class RandomBean {
private int numero;
/** Creates a new instance of RandomBean */
public RandomBean() {
}
/**
* @return the numero
*/
public int getNumero() {
return numero;
}
/**
* @param numero the numero to set
*/
public void setNumero(int numero) {
this.numero = numero;
}
public String ir_calculo(){
return "calculo02";
}
public int obtenerNumero(){
return (int)(Math.random()*100);
}
}
<h2>Generar número aleatorio</h2>
<h:form>
<h:panelGrid>
<h:outputLabel value="#{msgs.titulo4}"></h:outputLabel>
<h:inputText value="#{randomBean.numero}"></h:inputText>
<h:commandButton action="#{randomBean.ir_calculo()}" value="adivinar" />
</h:panelGrid>
</h:form>
<h:form>
<h:panelGrid>
<h:outputLabel value="#{msgs.titulo4}"></h:outputLabel>
<h:inputText value="#{randomBean.numero}"></h:inputText>
<h:commandButton action="#{randomBean.ir_calculo()}" value="adivinar" />
</h:panelGrid>
</h:form>
<h2>Datos obtenidos</h2>
<h:form>
<h:panelGrid>
<h:outputLabel value="#{msgs.titulo5}"></h:outputLabel>
<h:outputLabel value="#{randomBean.numero}"></h:outputLabel>
<h:outputLabel value="#{msgs.titulo6}"></h:outputLabel>
<h:outputText value="#{randomBean.obtenerNumero()}"></h:outputText>
<!-- aqui hago la comparación-->
<h:outputLabel value="#{msgs.titulo7}"></h:outputLabel>
<h:outputLabel value="#{randomBean.numero==randomBean.obtenerNumero() ?'Correcto':'Incorrecto'}">
</h:outputLabel>
</h:panelGrid>
</h:form>
<h:outputLink value="http://localhost:8080/pruebaPrimeFaces/faces/index.xhtml"><h:outputText value="Regreso"/></h:outputLink>
<h:form>
<h:panelGrid>
<h:outputLabel value="#{msgs.titulo5}"></h:outputLabel>
<h:outputLabel value="#{randomBean.numero}"></h:outputLabel>
<h:outputLabel value="#{msgs.titulo6}"></h:outputLabel>
<h:outputText value="#{randomBean.obtenerNumero()}"></h:outputText>
<!-- aqui hago la comparación-->
<h:outputLabel value="#{msgs.titulo7}"></h:outputLabel>
<h:outputLabel value="#{randomBean.numero==randomBean.obtenerNumero() ?'Correcto':'Incorrecto'}">
</h:outputLabel>
</h:panelGrid>
</h:form>
<h:outputLink value="http://localhost:8080/pruebaPrimeFaces/faces/index.xhtml"><h:outputText value="Regreso"/></h:outputLink>
<?xml version='1.0' encoding='UTF-8'?> <!-- =========== FULL CONFIGURATION FILE ================================== -->
<faces-config version="2.0"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee <a href="http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd">
<navigation-rule>
" title="http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd">
<navigation-rule>
">http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd">
<navigatio...</a> <from-view-id>*</from-view-id>
<navigation-case>
<from-outcome>calculo02</from-outcome>
<to-view-id>/datos.xhtml</to-view-id>
</navigation-case>
</navigation-rule>
<managed-bean>
<managed-bean-name>RandomBean</managed-bean-name>
<managed-bean-class>org.primefaces.ejemplos.RandomBean</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>
</faces-config>
<faces-config version="2.0"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee <a href="http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd">
<navigation-rule>
" title="http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd">
<navigation-rule>
">http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd">
<navigatio...</a> <from-view-id>*</from-view-id>
<navigation-case>
<from-outcome>calculo02</from-outcome>
<to-view-id>/datos.xhtml</to-view-id>
</navigation-case>
</navigation-rule>
<managed-bean>
<managed-bean-name>RandomBean</managed-bean-name>
<managed-bean-class>org.primefaces.ejemplos.RandomBean</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>
</faces-config>
Etiquetas:
aprender java,
aprender jsf,
faces,
javaserver,
jsf
martes, 13 de diciembre de 2011
Ejemplo de uso de MySQL: una pequeña bitácora
Tener una bitácora nos ayuda a tener un mejor control de nuestra información:
- ver quien hace cambios por “error”
- ver la fecha
- tipo de operación (inserción, actualización y/o borrado)
Bueno he aquí los pasos para crear una pequeña bitácora
1. Crear la base de datos
create database prueba1;
show databases;
use prueba1;
2. Crear una tabla llamadas personas
create table personas (id_persona int auto_increment primary key, nombre varchar (50), apellido_p varchar (50), apellido_m varchar(50), edad int, peso double, talla double);
3. Crear un procedimiento almacenado para insertar registros
DELIMITER $$
DROP PROCEDURE IF EXISTS `prueba1`.`Insertar` $$
CREATE PROCEDURE `prueba1`.`Insertar`(in nombre varchar (50), apellido_p varchar (50), apellido_m varchar(50), edad int, peso double, talla double)
BEGIN
INSERT INTO personas (nombre,apellido_p, apellido_m , edad , peso , talla) VALUES (nombre,apellido_p, apellido_m , edad , peso , talla );
END $$
DELIMITER ;
4. Crear un procedimiento almacenado para actualizar registros
DELIMITER $$
DROP PROCEDURE IF EXISTS `prueba1`.`Actualizar` $$
CREATE PROCEDURE `prueba1`.`Actualizar` (in id_personax int,edadx int,pesox double)
BEGIN
update personas set edad=edadx,peso=pesox where id_persona=id_personax;
END $$
DELIMITER ;
5. Crear un procedimiento almacenado para eliminar registros
DELIMITER $$
DROP PROCEDURE IF EXISTS `prueba1`.`Borrar` $$
CREATE PROCEDURE `prueba1`.`Borrar` (in id int)
BEGIN
delete from personas where id_persona=id;
END $$
DELIMITER ;
6. Invocar los procedimientos almacenados
Call Insertar (‘Horacio’,’Gomez’,’Carmona’,25,65,1.68);
Call Insertar (‘Hugo’,’Torres’,’Mendez’,32,67,1.70);
Call Actualizar (1, 26, 66);
Call Borrar (2)
Ver registros
Select * from personas;
7. Crear un procedimiento almacenado que muestre todos los registros
DELIMITER $$
DROP PROCEDURE IF EXISTS `sp_verPersonas` $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_verPersonas`()
select *from personas $$
DELIMITER ;
Para invocarlo
Call sp_verPersonas();
8. Crear tabla que lleve un control de quien hace cambios en la base de datos prueba1
CREATE TABLE infobase (usuario varchar (50), descripcion varchar (50),
fecha TIMESTAMP default now());
9. Crear trigger para la inserción
delimiter $$
create trigger tr_insercion
befote insert on personas
for each row
begin
insert into infobase values(user(),’persona creada’,now());
end $$
10. Crear trigger para la actualización
delimiter $$
create trigger tr_actualizacion
befote update on personas
for each row
begin
insert into infobase(usuario,descripcion,fecha) values(user(),’persona modificada’,now());
end $$
11. Crear trigger para la eliminación
delimiter $$
create trigger tr_borrado
befote delete on personas
for each row
begin
insert into infobase values(user(),’persona eliminada’,now());
end $$
Ver cambios
Select *from infobase;
12. Crear procedimiento almacenado para ver un registro en particular
DELIMITER $$
DROP PROCEDURE IF EXISTS `sp_verPersona` $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_verPersona`(in id_buscar int)
select *from personas where id_persona=id_buscar $$
DELIMITER ;
13. Ahora hacer una operación: calcular el I.M.C. (Índice de Masa Corporal) de las personas registradas
Fórmula: peso/(talla*talla)
DELIMITER $$
DROP PROCEDURE IF EXISTS `sp_verImc` $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_verImc`()
select id_persona,nombre,edad,peso,talla,peso/(talla*talla) from personas $$
DELIMITER ;
14. Programa en Java para ver los registros
package control.pruebas;
import java.sql.DriverManager;
import java.sql.Connection;
import java.sql.Statement;
import java.sql.ResultSet;
public class Codemonkey {
public static void main(String[] args) {
try{
Class.forName("com.mysql.jdbc.Driver");
Connection conecta=(Connection) DriverManager.getConnection("jdbc:mysql://localhost:3306/prueba1","root","root");
System.out.println("Conexión exitosa\n");
Statement sentencia= conecta.createStatement();
ResultSet registro=sentencia.executeQuery("select id_persona,nombre,edad,peso,talla,peso/(talla*talla) from personas");
while(registro.next()){
System.out.println("\t\nId: "+registro.getInt("id_persona"));
System.out.println("Nombre: "+registro.getString("nombre"));
System.out.println("Edad:"+registro.getInt("edad"));
System.out.println("Peso:"+registro.getDouble("peso"));
System.out.println("Talla: "+registro.getDouble("talla"));
System.out.println("IMC: "+registro.getDouble("peso/(talla*talla)"));
}
conecta.close();
System.out.println("\nConexión cerrada");
}catch(Exception ex){
ex.printStackTrace();
}
}
}
package control.pruebas;
import java.sql.DriverManager;
import java.sql.Connection;
import java.sql.Statement;
import java.sql.ResultSet;
public class Codemonkey {
public static void main(String[] args) {
try{
Class.forName("com.mysql.jdbc.Driver");
Connection conecta=(Connection) DriverManager.getConnection("jdbc:mysql://localhost:3306/prueba1","root","root");
System.out.println("Conexión exitosa\n");
Statement sentencia= conecta.createStatement();
ResultSet registro=sentencia.executeQuery("select id_persona,nombre,edad,peso,talla,peso/(talla*talla) from personas");
while(registro.next()){
System.out.println("\t\nId: "+registro.getInt("id_persona"));
System.out.println("Nombre: "+registro.getString("nombre"));
System.out.println("Edad:"+registro.getInt("edad"));
System.out.println("Peso:"+registro.getDouble("peso"));
System.out.println("Talla: "+registro.getDouble("talla"));
System.out.println("IMC: "+registro.getDouble("peso/(talla*talla)"));
}
conecta.close();
System.out.println("\nConexión cerrada");
}catch(Exception ex){
ex.printStackTrace();
}
}
}
viernes, 25 de noviembre de 2011
TDD… ejemplos básicos
Es una técnica de programación que emplea pruebas unitarias y refactorización de código.
El ciclo de vida de TDD comprende tres etapas
- Escribir una prueba que falle (rojo)
- Escribir una prueba que pase (verde)
- Refactorización, mejorar el código sin afectar su funcionamiento interno
Problema. Obtener el número de pulsaciones de una persona con 15 segundos de ejercitación.
Entrada: edad de la persona
Salida: número de pulsaciones
Restricciones o casos posibles:
- la edad no debe ser cero o un valor negativo,
- un valor flotante (ej. 4.5)
- o un carácter.
Fórmula. Num_pulsaciones = (220 – edad)/15
El primer paso es crear una prueba que falle, existen libros sobre TDD y Refactorización que indican la forma realizar los test, pero bien lo trataré de hacer según mi entendimiento.
PulsacionTest. Java
@Test
public void testObtenerPulsaciones() {
Pulsacion pulsacion = new Pulsacion();
System.out.println("obtenerPulsaciones: entero positivo");
int edad = 26;
double expResult = 12.0;
assertEquals(expResult, pulsacion.obtenerPulsaciones(edad), 0.0);
}
Obvio es que falle (no tengo que probar). Ahora el segundo paso es crear el código necesario (Pulsacion.java) para pasar la prueba.
//Código inicial
Pulsacion.java
public double obtenerPulsaciones(int edad){
return (220-edad)/15;
}
Listo pasa la primer prueba (valor entero no negativo). Ahora otro problema, es necesario realizar pruebas para los tres casos posibles (valor cero o negativo, valor flotante, o carácter).
Para ahorrar líneas de código defino “pulsación” como un atributo de la clase PulsacionTest.java para que sea accesible para los demás métodos.
He aquí el código aplicando TDD y un poco de Refactorización.
PulsacionTest. Java
Pulsacion pulsacion = new Pulsacion();
//para un valor entero no negativo
@Test
public void testObtenerPulsaciones() {
System.out.println("obtenerPulsaciones: entero positivo");
int edad = 26;
double expResult = 12.0;
assertEquals(expResult, pulsacion.obtenerPulsaciones(edad), 0.0);
}
// para un valor cero o negativo
@Test
public void testObtenerPulsacionesNegativoCero(){
System.out.println("obtenenerPulsaciones: cero o negativo");
int edad_neg=-26;
double expResult1=14.0;
assertEquals(expResult1, pulsacion.obtenerPulsaciones(edad_neg), 0.0);
}
// para un valor flotante
@Test
public void testObtenerPulsacionesReal(){
System.out.println("obtenenerPulsaciones: real");
double edad_real=26.0;
double expResult2=12.0;
assertEquals(expResult2, pulsacion.obtenerPulsaciones((int)edad_real), 0.0);
}
//para un carácter
@Test
public void testObtenerPulsacionesCaracter(){
System.out.println("obtenenerPulsaciones: caracter");
String edad_cad="26";
double expResult3=12.0;
assertEquals(expResult3, pulsacion.obtenerPulsaciones(Integer.parseInt(edad_cad)), 0.0);
}
En este método se podría agregar otro método que compruebe si la cadena introducida es numérica o no.
public bolean esNumerico (String cad){
try{
Integer.parseInt (cad);
return true;
}catch(NumberFormatException ex){
return false;}
}
//Código final
Pulsacion.java
public double obtenerPulsaciones(int edad){
if((int)edad<=0){
return (220-0)/15;
}
else if((int)edad>0){
return (220-(int)edad)/15;
}
else{
return (220-edad)/15;
}
}
jueves, 17 de noviembre de 2011
¿Cómo introducir/mostrar datos en Java, C, Groovy & Python?
En Java/Groovy
1. Uso de java.util.Scanner y java.io
package control.pruebas;
import java.util.Scanner;
import java.io.*;
public class Entrada {
/**
* @param args
*/
public static void main(String[] args) {
BufferedReader teclado= new BufferedReader(new InputStreamReader(System.in));
Scanner tecla=new Scanner(System.in);
System.out.println("Introduce entero");
int entero;
try {
entero = Integer.parseInt(teclado.readLine());
System.out.printf("%d",entero);
System.out.println(entero);
} catch (NumberFormatException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("Introduce real");
double real;
try {
real = Double.parseDouble(teclado.readLine());
System.out.printf("%f",real);
System.out.println(real);
} catch (NumberFormatException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("Introduce cadena");
String cadena;
try {
cadena = teclado.readLine();
System.out.printf("%s",cadena);
System.out.println(cadena);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("Introduce entero");
int enterox= tecla.nextInt();
System.out.printf("%d",enterox);
System.out.println(enterox);
System.out.println("Introduce real");
double realx= tecla.nextInt();
System.out.printf("%f",realx);
System.out.println(realx);
System.out.println("Introduce cadena");
String cadenax= tecla.nextLine();
System.out.printf("%s",cadenax);
System.out.println(cadenax);
}
}
En Python
entero=int(raw_input('Introduce entero:'))
print "entero: %d"%(entero)
print "entero: ",entero
real=float(raw_input('Introduce real:'))
print "real: %f"%(real)
print "real: ",real
cadena=raw_input('Introduce cadena')
print "cadena: ",cadena
En C
int entero;
float real;
printf("Introduce entero:"); scanf("%d",&entero);
printf("entero: %d",entero);
printf("Introduce real:"); scanf("%d",&real);
printf("entero: %f",real);
char cadena[23];
puts("Introduce cadena");
gets(cadena);
puts(cadena);
Etiquetas:
aprender,
aprender java,
aprender python,
c,
closures,
ejmeplo,
groovy,
programas java
domingo, 13 de noviembre de 2011
¿Cómo aprender a programar?
- Conoce gente que sepa de programación
- Busca información, libros, apuntes, blogs, sitios especializados,etc.
- Comparte tus conocimientos (aunque sean limitados) siempre alguien te podrá corregir si te equivocas
- Siempre es bueno tener tu propio "banco de datos" donde almacenar tus apuntes, tus notas, etc.
- Leer ayuda de mucho, también la lógica y las matemáticas
- Haz notas de lo que no entiendas, busca términos que te confundan o que no entiendas claramente
- Preguntar es bueno, aunque no siempre esperes que te contesten y resuelvan tus problemas
- El Face y Twitter no son solo para ver mensajes sin contenido ni sustancia, también pueden servir para encontrar buena información y conocer gente
- Si encuentras código no es bueno tan solo copiar y pegar,estudialo no todo el código que encuentras en internet sirve
- Y lo más importante, el programador se hace con la práctica no en las aulas
Un ejemplo muy sencillo. Sumar todos los valores de un arreglo
//defino un arreglo con números
int[] numeros={3,4,5,6,7,8,9};
int i,suma=0;
//bucle que va sumando todos los valores del arreglo
for(i=0;i<numeros.length;i++){
suma+=numeros[i];
}
//muestro la suma de todos los valores
System.out.println("Suma de todos los números: "+suma);
sábado, 12 de noviembre de 2011
¿XML ... eso con que se come?
Java aparte de bonito, barato y eficiente es un lenguaje que permite procesar (con ayuda de algunas herramientas como:JAXB , XStream, JDom, etc.) los archivos *.xml.
Los documentos xml tienen varios usos:
- Intercambo de informaciön entre aplicaciones (Web o de escritorio)
- XML como "base de datos"
- Ahorro de recursos de los servidores
- etc.
Un ejemplo. Crear un xml que represente la entidad Programador y sus atributos (nombre,edad y email).
Programador.xml
<?xml version=”1.0” encoding=”UTF-8” standalone=”yes”?>
<Programador>
<Nombre>Daniel</Nombre>
<Edad>27</Edad>
<Email>daniel.2132@servidor.com</Email>
</Programador>
<Programador>
<Nombre>Daniel</Nombre>
<Edad>27</Edad>
<Email>daniel.2132@servidor.com</Email>
</Programador>
¿Cómo se le da validez a los archivos xml?
Existen dos alternativas (validadores) los Documentos de definición de tipos:1. DTD : ,describe la estructura del documento con un lenguaje que no tiene nada que ver con XML.
2. XML Schemas: describe la estructura con XML
Ejemplo con DTD.
programador.dtd
<!ELEMENT Programador(Nombre,Edad,Email)>
<!ELEMENT Nombre (#PCDATA)>
<!ELEMENT Edad (#PCDATA)>
<!ELEMENT Email (#PCDATA)>
<!ELEMENT Nombre (#PCDATA)>
<!ELEMENT Edad (#PCDATA)>
<!ELEMENT Email (#PCDATA)>
Asi quedaria el documento xml con dtd.
<?xml version=”1.0” encoding=”UTF-8” standalone=”yes”?>
<!DOCTYPE Programador SYSTEM "programador.dtd">
<Programador>
<Nombre>Daniel</Nombre>
<Edad>27</Edad>
<Email>daniel.2132@servidor.com</Email>
</Programador>
<!DOCTYPE Programador SYSTEM "programador.dtd">
<Programador>
<Nombre>Daniel</Nombre>
<Edad>27</Edad>
<Email>daniel.2132@servidor.com</Email>
</Programador>
Tratamiento de documentos XML
Básicamente existen dos alternativas (se denominan parsers o analizadores):
1. SAX:Simple API for XML, consiste en procesar los documentos xml según se va leyendo las etiquetas y se van localzando los elementos
2. DOM:Document Object Model, consiste en leer el documento xml y obtener y modelo basado en objetos que se mantienene en memoria para poder realizar el tratamiento conforme sea necesario sobe la información leida. Es más lento que SAX.
He aqui un ejemplo de un programa que lee XML escrito por @javadabadoo
Espero continuar con el tema y hacer un ejemplo con JAXB. En otro post trataréde hablar más de esa tecnología con ayuda de NetBeans y/o Eclipse.
JAXB
Crear una clase java básica.Datos1.java
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package modelo.pruebas;
//import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
/**
*
* @author yo
*/
@XmlRootElement
public class Datos1 {
private double valor,tasa;
private int periodo; /**
* @return the valor
*/
public double getValor() {
return valor;
}
/**
* @param valor the valor to set
*/
@XmlElement
public void setValor(double valor) {
this.valor = valor;
}
/**
* @return the tasa
*/
public double getTasa() {
return tasa;
}
/**
* @param tasa the tasa to set
*/
@XmlElement
public void setTasa(double tasa) {
this.tasa = tasa;
}
/**
* @return the periodo
*/
public int getPeriodo() {
return periodo;
}
/**
* @param periodo the periodo to set
*/
@XmlElement
public void setPeriodo(int periodo) {
this.periodo = periodo;
}
}
Convertir esa clase a xml.
ControlDatos1Xml.java
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package control.pruebas; import java.io.File;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import modelo.pruebas.Datos1;
import javax.swing.JOptionPane;
/**
*
* @author yo
*/
public class ControlDatos1Xml {
Datos1 datos= new Datos1();
public static void main(String[] args){
ControlDatos1Xml control= new ControlDatos1Xml();
double v=0,t=0; int p;
v=Double.parseDouble(JOptionPane.showInputDialog("valor"));
t=Double.parseDouble(JOptionPane.showInputDialog("tasa"));
p=Integer.parseInt(JOptionPane.showInputDialog("periodo"));
control.datos.setPeriodo(p);
control.datos.setTasa(t);
control.datos.setValor(v);
//------------------------------------
try {
File file = new File("/home/user/PruebasClases/dat1.xml");
JAXBContext jaxbContext = JAXBContext.newInstance(Datos1.class);
Marshaller jaxbMarshaller = jaxbContext.createMarshaller();
jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
jaxbMarshaller.marshal(control.datos, file);
jaxbMarshaller.marshal(control.datos, System.out);
} catch (JAXBException e) {
e.printStackTrace();
}
JOptionPane.showMessageDialog(null, "XML generado");
//-----------------------------------
}
}
Leer el XML como si fuera objeto.
ControlDatos1Class.java
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package control.pruebas;
import java.io.File;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Unmarshaller;
import modelo.pruebas.Datos1; /**
*
* @author yo
*/
public class ControlDatos1Class {
public static void main(String[] args){
try {
File file = new File("/home/user/PruebasClases/dat1.xml");
JAXBContext jaxbContext = JAXBContext.newInstance(Datos1.class);
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
Datos1 datos = (Datos1) jaxbUnmarshaller.unmarshal(file);
System.out.println(datos);
//---------------------------------------
if(datos.getValor()<=0){
System.out.println("El valor no debe ser menor o igual a cero");
}
//------------------------------------
else{
System.out.println("valor -->"+datos.getValor());
System.out.println("tasa -->"+datos.getTasa());
System.out.println("periodo -->"+datos.getPeriodo());
}
} catch (JAXBException e) {
e.printStackTrace();
}
//-----------------------------------
}
}
JAXB
Es una tecnología que permite obtener una representación XML de un objeto Java y viceversa.
Es una tecnología que permite obtener una representación XML de un objeto Java y viceversa.
Algunas librerías necesarias para trabajar con JAXB:
javax.xml.bind.JAXBContext
javax.xml.bind.JAXBException
javax.xml.bind.Mashaller
javax.xml.bind.Unmashaller
javax.xml.bind.annotation.XmlAttribute
javax.xml.bind.annotation.XmlRootElement
javax.xml.bind.annotation.XmlElement
javax.xml.bind.annotation.XmlType
javax.xml.bind.annotation.XmlAccessType
javax.xml.bind.annotation.XmlAccessorType
javax.xml.bind.annotation.XmlEnumValue
javax.xml.bind.annotation.XmlList
javax.xml.bind.annotation.XmlElementWrapper
XML … XML Schemas
XML Schemas (*.xsd): Se tratan de documentos XML que permiten definir la estructura y validez de documentos XML.
Parecidos a los archivos *.dtd, pero permiten definir una serie de tipos como string, int, integer, etc. Y poseen un mecanismo para crear nuevos tipos, simples y complejos que representan los tipos de documentos XML.
Tanto Eclipse como NetBeans poseen herramientas para crear estos archivos XML.
Estructura básica de un XML Schema
<?xml version=”1.0” encoding=”UTF-8”?>
<xs:schema xmlns:xs=”http://www.w3.org./2009/XMLSchema”>
<!-- aquí pones los elementos y/o descripción del Schema -->
</xs:schema>
Definición de tipos simples
1. Mediante enumeración
2. Mediante derivación
3. Mediante unión
<xs:simpleType name=”Algo”>
…
…
</xs:simpleType>
Definición de tipos complejos
<xs:complexType name=’Algo’>
<xs:sequence>
…
…
</xs:sequence>
…
…
</xs:complexType>
Ejemplo. Crear una estructura “persona” con 4 atributos: nombre, edad, peso, y talla.
persona.xsd
<?xml version=”1.0” encoding=”UTF-8” standalone=”yes”?>
<xs:schema xmlns:xs=”http://www.w3.org/2009/XMLSchema ”>
<xs:element name=”Persona” type=”tPersona”/>
<xs:complextType name=”tPersona”>
<xs:sequence>
<xs:element name=”nombre” type=”xs:string”/>
<xs:element name=”edad” type=”xs:integer”/>
<xs:element name=”peso” type=”xs:double”/>
<xs:element name=”talla” type=”xs:double”/>
</xs:sequence>
</xs:complexType>
</xs:schema>
persona.xml
<Persona xmlns:xs=”http://www.w3.org/2009/XMLSchema -instance” xsi:noNamespaceSchemaLocation=”persona.xsd”>
<nombre>Horacio</nombre>
<edad>20</edad>
<peso>56</peso>
<talla>1.65</talla>
</Persona>
Ejemplo con NetBeans
1. Bajar e instalar el pugin XMLTools
2. Crear el XML Schema
3. Crear el JAXB Binding (elegir en verbose)
4. Crear el archivo xml
5. Crear la clase java que lea el xml
Ejemplo con Eclipse
1. Crear el XML Schema
2. Generar: XML File y/o JAXB Class
3. Crear la clase java que lea el xml
Etiquetas:
api,
aprender java,
jaxb,
tratamiento xml,
xml
Suscribirse a:
Entradas (Atom)