Foros del Web » Programación para mayores de 30 ;) » Java »

Pq me transforma el / por \

Estas en el tema de Pq me transforma el / por \ en el foro de Java en Foros del Web. genero un string con el formato de xml y luego lo quiero transformar en html con un xsl , pero de todas todas use el ...
  #1 (permalink)  
Antiguo 24/04/2007, 02:17
 
Fecha de Ingreso: mayo-2005
Mensajes: 423
Antigüedad: 19 años
Puntos: 1
Pq me transforma el / por \

genero un string con el formato de xml y luego lo quiero transformar en html con un xsl , pero de todas todas use el string o jdom para generar el xml, me transforma los </valor> por <\valor> que estoy haciendo mal o que es lo que esta pasadno

el error que me da es el siguiente
Código HTML:
org.apache.jasper.JasperException: javax.xml.transform.TransformerException: com.sun.org.apache.xml.internal.utils.WrappedRuntimeException: C:\Archivos de programa\netbeans-5.5\enterprise3\apache-tomcat-5.5.17\bin\<?xml version="1.0"?>
<datos>
<informacion>
<columna>
<nombre>nombre<\nombre>
<valor>javi<\valor>
<\columna>
<columna>
<nombre>apellidos<\nombre>
<valor>Allende Astigarraga<\valor>
<\columna>
<\informacion>
<\datos> (El nombre de archivo, directorio o etiqueta del volumen no es válido)
	org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:510)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:375)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:368)
__________________
Dios creo un equipo perfecto a los demas los lleno de extranjeros

Última edición por Legolas_Bilbao; 24/04/2007 a las 02:23
  #2 (permalink)  
Antiguo 24/04/2007, 04:33
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Re: Pq me transforma el / por \

Hola,

Si ver el codigo con el que generas el XML es dificil decir, pero es bastante raro que el JDOM te lo genere asi, ya que definitivamente es incorrecto.

Al vuelo del tema, ¿como haces para generar el XML? ¿Usas algun "framework" o lo haces directamente desde Servlets? Mas que nada lo digo por que nosotros vasamos todas nuestras aplicaciones en XML y el "framework" que tenemos hecho, tiene 8 años asi que no es de ayer , quizá te sirviera, aunque fuera para coger ideas.

Un saludo
  #3 (permalink)  
Antiguo 24/04/2007, 04:42
 
Fecha de Ingreso: mayo-2005
Mensajes: 423
Antigüedad: 19 años
Puntos: 1
Re: Pq me transforma el / por \

no no usamos ningun tipo de framework, de hecho el xml , lo genero en una clase.

y el codigo con el que genero el xml es de la siguiente manera(version warra)

Código:
public String generarXML( Hashtable tabla){
     String _xml ="<?xml version=\"1.0\"?>";
     _xml+="<datos>";
     _xml+="<informacion><cabecera>Breve_Descripcion</cabecera>";
     _xml+="<columna><nombre></nombre><valor>"+tabla.get("f1c7")+"</valor></columna>";
     _xml+="</informacion>";
     _xml+="<informacion><cabecera>Palabras_Clave</cabecera>";
     _xml+="<columna><nombre></nombre><valor>"+tabla.get("f1c9")+"</valor></columna>";
     _xml+="</informacion>";
     _xml+="<informacion><cabecera>Clase_Empresa</cabecera>";
     _xml+="<columna><nombre></nombre><valor></valor></columna>";
     _xml+="</informacion>";
     _xml+="<informacion><cabecera>Grupo</cabecera>";
     if(tabla.get("f1c13").equals("0")){
     _xml+="<columna><nombre>Forma_Parte</nombre><valor>No</valor></columna>";
     }else{
     _xml+="<columna><nombre>Forma_Parte</nombre><valor>Si</valor></columna>";    
    _xml+="<columna><nombre>Grupo_Pertenece</nombre><valor>"+tabla.get("f1c15")+"</valor></columna>";
     }
     _xml+="</informacion>";
     _xml+="</datos>";
    return _xml;
    }
para que me funcione, lo q he hecho es crear un xml en tiempo de ejecucion y cuando genero el html y el pdf lo elimino,pero no entiendo pq me daba el error anteriormente comentado
__________________
Dios creo un equipo perfecto a los demas los lleno de extranjeros
  #4 (permalink)  
Antiguo 24/04/2007, 06:14
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Re: Pq me transforma el / por \

Yo creo que no es un error de interpretar el XML, si no que por algun motivo el Tomcat se esta confundiendo e intentando procesarlo de otra forma.

Fijate que el error dice:

(El nombre de archivo, directorio o etiqueta del volumen no es válido)

Y que dice que no ha podido procesar el fichero: C:\Archivos de programa\netbeans-5.5\enterprise3\apache-tomcat-5.5.17\bin\...tu XML

Eso es que el cree que el XML que le pasas es el nombre de un fichero, y tu en realidad le quieres pasar el contenido. Así que diria que estas usando un metodo incorrecto del procesador XSL para pasarle el contenido, ya que el cree que le estas pasando un nombre de fichero.

Por cierto, el tema de concatenar cadenas con += es muy muy ineficiente en estos casos y bastante desaconsejable. Lo suyo es usar una librería, aunque sea simple, que use StringBuffer etc.

Si lo estás usando en una aplicación web, el tema nosotros lo tenemos bastante solucionado, por si te interesa.

Puedes ver un ejemplo aquí :
https://swww.uib.es/webleaf/confluence/x/HgE

Aunque es un ejemplo unicamente de tratar un fichero estático, hacerlo con clases Java es muy muy sencillo, sólo que todavía no he escrito un ejemplo como ese con clases Java.

S!
  #5 (permalink)  
Antiguo 24/04/2007, 07:35
 
Fecha de Ingreso: mayo-2005
Mensajes: 423
Antigüedad: 19 años
Puntos: 1
Re: Pq me transforma el / por \

Entiendo lo que dices, de hecho lo de StringBuffer lo voy a implementar ahora,con respecto a como tratar el fichero

yo hago lo siguiente

Código:
 org.jdom.Document xml=builder.build(obtenerXML());
y ahi es donde me peta

pero claro mirando los metodos me pone que si paso un string lo tomo como un systemid

y claro la solucion que he optado es la de hacer una especie de xml temporal


Código:
String res = generarXML(tabla,tabladependiente);
             BufferedWriter out = new BufferedWriter(new FileWriter("fichero.xml"));
             out.write(res);
             out.close();
             org.jdom.Document xml=builder.build("fichero.xml");

//tras tratar el xml
 new File("fichero.xml").delete();
pero claro cuantos recursos consume?? o como puedo optimizar esa manera de trabajar?

Por cierto el ejemplo que me has pasado me pide un logueo
__________________
Dios creo un equipo perfecto a los demas los lleno de extranjeros

Última edición por Legolas_Bilbao; 24/04/2007 a las 07:41
  #6 (permalink)  
Antiguo 24/04/2007, 11:08
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Re: Pq me transforma el / por \

Para construir un Document, tendrias que usar el SAXBuilder con el metodo para leer un stream:
http://www.jdom.org/docs/apidocs/org...java.io.Reader)

Y crear un Reader a partir de tu String... pues la clase StringReader:
http://java.sun.com/j2se/1.4.2/docs/...ingReader.html

Gracias por avisarme lo de los permisos, no se por que tenía marcado el documento como privado . Prueba ahora:
https://swww.uib.es/webleaf/confluence/x/HgE
  #7 (permalink)  
Antiguo 25/04/2007, 00:53
 
Fecha de Ingreso: mayo-2005
Mensajes: 423
Antigüedad: 19 años
Puntos: 1
Re: Pq me transforma el / por \

Cita:
Iniciado por GreenEyed Ver Mensaje
Para construir un Document, tendrias que usar el SAXBuilder con el metodo para leer un stream:
http://www.jdom.org/docs/apidocs/org...java.io.Reader)

Y crear un Reader a partir de tu String... pues la clase StringReader:
http://java.sun.com/j2se/1.4.2/docs/...ingReader.html

Gracias por avisarme lo de los permisos, no se por que tenía marcado el documento como privado . Prueba ahora:
https://swww.uib.es/webleaf/confluence/x/HgE
Pos muchas gracias :P , ahora le echo un ojo a todo este chorro de información.
__________________
Dios creo un equipo perfecto a los demas los lleno de extranjeros
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:01.