Visual Basic.NET - XML to String

 
Vista:

XML to String

Publicado por Nacho (7 intervenciones) el 27/12/2004 19:14:01
Hola a todos,

Soy nuevo con esta herramienta y tengo un problema que no se como solucionar.

Tratare de ser breve:

A partir de un XML, y un Xsl tengo que obtener un Texto con la transformacion, estoy haciendo lo siguiente:

Private filename As [String] = "C:\Temp\\zonas.xml"
Private stylesheet As [String] = "C:\Temp\\zonas.xsl"

Dim xslt As New XslTransform
Dim xpathdocument As New XPathDocument(filename)
Dim mystream As New MemoryStream
xslt.Transform(xpathdocument, Nothing, mystream, Nothing)

El caso es que no se como pasar ese memorystream a un Sting. Por favor a ver si alguien me puede ayudar que es muy urgente
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:XML to String

Publicado por Naho (7 intervenciones) el 28/12/2004 10:15:26
Nadie me puede ayudar????

Lo que necesito es leer de un Stream y guardar en un String???

Ayuda por favor
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:XML to String

Publicado por nacho (7 intervenciones) el 28/12/2004 12:54:09
ya lo he probado y nada de nada

Ahora he probado esto y me funciona correctamente:

Private filename As [String] = "C:\Temp\instantsaxon\zonas.xml"
Private stylesheet As [String] = "C:\Temp\instantsaxon\zonas.xsl"
Private Destino As [String] = "C:\Temp\instantsaxon\FinalZonas.htm"

Dim xslt As New XslTransform
Dim Reader As StreamReader
Dim cadena As String

xslt.Load(stylesheet)
xslt.Transform(filename, Destino, Nothing)
Reader = New StreamReader(Destino)
cadena = Reader.ReadToEnd
MessageBox.Show(cadena)

Y esto sin embargo me devuelve una cadena vacia:

Dim xslt As New XslTransform
Dim xpathdocument As New XPathDocument(filename)
Dim mystream As New MemoryStream
Dim reader As StreamReader
Dim cadena As String

xslt.Load(stylesheet)
xslt.Transform(xpathdocument, Nothing, mystream, Nothing)
reader = New StreamReader(mystream)
cadena = reader.ReadToEnd.ToString
MessageBox.Show(cadena)

Me interesa hacerlo de la segunda manera, es decir, obtener el resultado de la transformacion como texto sin generar un archivo intermedio
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:XML to String

Publicado por Edgar (1501 intervenciones) el 28/12/2004 12:28:36
Hola

Crea un StreamReader, en el constructor le pasas el MemoryStream

Luego usas el método ReadToEnd para obtener el string

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:XML to String

Publicado por nacho (7 intervenciones) el 28/12/2004 12:54:57
ya lo he probado y nada de nada

Ahora he probado esto y me funciona correctamente:

Private filename As [String] = "C:\Temp\instantsaxon\zonas.xml"
Private stylesheet As [String] = "C:\Temp\instantsaxon\zonas.xsl"
Private Destino As [String] = "C:\Temp\instantsaxon\FinalZonas.htm"

Dim xslt As New XslTransform
Dim Reader As StreamReader
Dim cadena As String

xslt.Load(stylesheet)
xslt.Transform(filename, Destino, Nothing)
Reader = New StreamReader(Destino)
cadena = Reader.ReadToEnd
MessageBox.Show(cadena)

Y esto sin embargo me devuelve una cadena vacia:

Dim xslt As New XslTransform
Dim xpathdocument As New XPathDocument(filename)
Dim mystream As New MemoryStream
Dim reader As StreamReader
Dim cadena As String

xslt.Load(stylesheet)
xslt.Transform(xpathdocument, Nothing, mystream, Nothing)
reader = New StreamReader(mystream)
cadena = reader.ReadToEnd.ToString
MessageBox.Show(cadena)

Me interesa hacerlo de la segunda manera, es decir, obtener el resultado de la transformacion como texto sin generar un archivo intermedio
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:XML to String

Publicado por Edgar (1501 intervenciones) el 28/12/2004 13:07:42
Hola

Estas seguro de que el MemoryStream contiene algo?? revisa la propiedad Length del mismo para ver si contiene algo

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:XML to String

Publicado por Nacho (7 intervenciones) el 28/12/2004 13:13:13
SI, si tiene datos, para comprobarlo le he puesto:

MessageBox.Show(CType(mystream.Length, Integer))
xslt.Transform(xpathdocument, Nothing, mystream, Nothing) MessageBox.Show(CType(mystream.Length, Integer))

Y primero me muestra un 0, y luego 621
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:XML to String

Publicado por Edgar (1501 intervenciones) el 28/12/2004 13:37:26
Hola

La verdad me parece un poco extraño el problema, intenta utilizar otro constructor para el streamreader, ya que al revisar la documentación del MSDN parece que al usar este constructor el asigna automaticamente la codificación del stream, y puede que no sea la correcta, intenta utilizar el contructor que tambien recibe un booleano y asignale a ese parámetro el valor true y me cuentas que tal

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:XML to String

Publicado por nacho (7 intervenciones) el 28/12/2004 13:46:57
Nada de nada...

Te parece que te mande los archivos .xml y .xsl y lo pruebas tu a ver que tal....

yo me he puesto un formulario con un boton y ya esta....
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:XML to String

Publicado por Edgar (1501 intervenciones) el 28/12/2004 13:58:52
Hola

Puedes enviarlo si deseas... de todas maneras, intenta cerrar el stream con el método Close del MemoryStream, es lo unico que se me ocurre que pueda ser

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:XML to String

Publicado por Nacho (7 intervenciones) el 28/12/2004 17:05:34
Vale chicos, ya esta resuelto y era una gilimemez, habia que posicionar el Stream en la posicion 0.

Os dejo el codigo por si a alguien en un futuro le interesa:

Private filename As [String] = "C:\Temp\instantsaxon\zonas.xml"
Private stylesheet As [String] = "C:\Temp\instantsaxon\zonas.xsl"
Private Destino As [String] = "C:\Temp\instantsaxon\FinalZonas.htm"

Private Sub cmdOpenXml_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdOpenXml.Click
Dim xslt As New XslTransform
Dim xpathdocument As New XPathDocument(filename)
Dim mystream As New MemoryStream
Dim reader As StreamReader

xslt.Load(stylesheet)
xslt.Transform(xpathdocument, Nothing, mystream, Nothing)
mystream.Position = 0

reader = New StreamReader(mystream)
MessageBox.Show("cadena" & vbCrLf & _
reader.ReadToEnd)
End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar