elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  [Ayuda]Xml y Listbox VB.NET
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Ayuda]Xml y Listbox VB.NET  (Leído 4,479 veces)
TMarmol

Desconectado Desconectado

Mensajes: 89


Just Learning


Ver Perfil WWW
[Ayuda]Xml y Listbox VB.NET
« en: 3 Diciembre 2013, 18:49 pm »

Necesito que mi programa lea un archivo xml online ( hasta ahi no tengo problema) la cosa es que hay un archivo que tiene nodos (creo que se llaman así ;D) con el mismo nombre, necesito que se añadan los valores de esos nodos a un listbox

Xml:
Código
  1. <friendslist>
  2.   <friends>
  3.      <friend>
  4.         <Dato>Valor</Dato>
  5.      </friend>
  6.      <friend>
  7.         <Dato>Valor</Dato>
  8.      </friend>
  9.      <friend>
  10.         <Dato>Valor</Dato>
  11.      </friend>
  12.      <friend>
  13.         <Dato>Valor</Dato>
  14.      </friend>
  15.      <friend>
  16.         <Dato>Valor</Dato>
  17.      </friend>
  18.   </friends>
  19. </friendslist>
     La longitud del archivo es variable.
     La palabra que sustituye a "Dato", es siempre la misma

Necesitaria que en un listbox aparecieran todos los valores, he probado con un bucle for, pero no he conseguido resultado
La forma en la que obtengo los datos del xml es la siguiente:
Código
  1. Dim MyDoc As New System.Xml.XmlDocument
  2.        MyDoc.LoadXml(XmlData)
  3.        MyDoc.SelectSingleNode("//Nodo/Nodo2/Nodo3/Dato").InnerText


En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.885



Ver Perfil
Re: [Ayuda]Xml y Listbox VB.NET
« Respuesta #1 en: 3 Diciembre 2013, 19:16 pm »

Código
  1. Public Class Form1
  2.  
  3.    ' Genero el documento XML.
  4.    ReadOnly xml As System.Xml.Linq.XDocument =
  5.    <?xml version="1.0" encoding="Windows-1252"?>
  6.    <friendslist>
  7.        <friends>
  8.            <friend><Dato>Valor1</Dato></friend>
  9.            <friend><Dato>Valor2</Dato></friend>
  10.            <friend><Dato>Valor3</Dato></friend>
  11.            <friend><Dato>Valor4</Dato></friend>
  12.            <friend><Dato>Valor5</Dato></friend>
  13.        </friends>
  14.    </friendslist>
  15.  
  16.    Shadows Sub Load() Handles MyBase.Load
  17.  
  18.        ' Proyecto los elementos deseados en un type anónimo.
  19.        Dim datos = From _friend As System.Xml.Linq.XElement
  20.                    In xml.<friendslist>.<friends>.<friend>
  21.                    Select New With {_friend.<Dato>.Value}
  22.  
  23.        ' Añado el miembro "Dato" al Listbox.
  24.        ListBox1.Items.AddRange(datos.Select(Function(element) element.Dato).ToArray)
  25.  
  26.    End Sub
  27.  
  28. End Class

Saludos


« Última modificación: 3 Diciembre 2013, 19:33 pm por EleKtro H@cker » En línea



TMarmol

Desconectado Desconectado

Mensajes: 89


Just Learning


Ver Perfil WWW
Re: [Ayuda]Xml y Listbox VB.NET
« Respuesta #2 en: 3 Diciembre 2013, 19:37 pm »

Código
  1. Lo he borrado para ahorrar espacio
Saludos
No es exactamente lo que busco, en tu código esta incluido el código xml, mi programa lo obtiene leyéndolo de una web mediante Openread, obtengo una string.
He modificado tu código para que funcionase con lo que tengo, pero aun así en el listbox no sale nada
Código
  1. Dim web As WebClient = New WebClient()
  2.        Dim stream As Stream = web.OpenRead("http://URLDEPAGINAWEBCONXML")
  3.        Dim reader As StreamReader = New StreamReader(stream)
  4.        Dim content As String = reader.ReadToEnd
  5.        Datos(content) ' --Una función que tengo en otra parte
  6.        Dim MyDoc As New System.Xml.XmlDocument
  7.        MyDoc.LoadXml(content)
  8.        Dim doc As XDocument = XDocument.Parse(content)
  9.        Dim datas = (From _friend In doc.<friendslist>.<friends>.<friend>
  10.                  Select New With {_friend.<Dato>.Value})
  11.  
  12.        ListBox1.Items.AddRange(datas.Select(Function(x) x.Dato).ToArray)
  13.  
En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.885



Ver Perfil
Re: [Ayuda]Xml y Listbox VB.NET
« Respuesta #3 en: 3 Diciembre 2013, 19:44 pm »

No es exactamente lo que busco, en tu código esta incluido el código xml, mi programa lo obtiene leyéndolo de una web mediante Openread, obtengo una string.

El código que mostré es un ejemplo, puedes adaptarlo para leer diréctamente el string:

Código
  1. Dim datos = From _friend As System.Xml.Linq.XElement
  2.            In XDocument.Parse(xml).<friendslist>.<friends>.<friend>
  3.            Select New With {_friend.<Dato>.Value}

EDITO:
En el código que has mostrado estás usando/cargando un XmlDocument y un XDocument, elige uno de los dos, elimina estas lineas de tú código:
Citar
Código
  1. Dim MyDoc As New System.Xml.XmlDocument
  2. MyDoc.LoadXml(content)

PD: también puedes hacerlo todo de una:

Código
  1. ListBox1.Items.AddRange(
  2.    (From _friend As XElement
  3.     In XDocument.Parse(xml).<friendslist>.<friends>.<friend>
  4.     Select New With {_friend.<Dato>.Value}
  5.    ).Select(Function(element) element.Dato).ToArray
  6. )

saludos
« Última modificación: 3 Diciembre 2013, 19:56 pm por EleKtro H@cker » En línea



TMarmol

Desconectado Desconectado

Mensajes: 89


Just Learning


Ver Perfil WWW
Re: [Ayuda]Xml y Listbox VB.NET
« Respuesta #4 en: 3 Diciembre 2013, 20:04 pm »

El código que mostré es un ejemplo, puedes adaptarlo para leer diréctamente el string:

EDITO:
En el código que has mostrado estás usando/cargando un XmlDocument y un XDocument, elige uno de los dos, elimina estas lineas de tú código:
PD: también puedes hacerlo todo de una:

saludos
He hecho lo que me has dicho y sigue sin pasar nada
Código
  1.    Public Function Amigos()
  2.        On Error Resume Next
  3.        Dim web As WebClient = New WebClient()
  4.        Dim stream As Stream = web.OpenRead("http://URLXML")
  5.        Dim reader As StreamReader = New StreamReader(stream)
  6.        Dim content As String = reader.ReadToEnd
  7.        Datos(content)
  8.        Dim datas = From _friend As System.Xml.Linq.XElement
  9.            In System.Xml.Linq.XDocument.Parse(content).<friendslist>.<friends>.<friend>
  10.            Select New With {_friend.<Dato>.Value}
  11.        ListBox1.Items.AddRange(datas.Select(Function(element) element.Dato).ToArray)
  12.    End Function
En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.885



Ver Perfil
Re: [Ayuda]Xml y Listbox VB.NET
« Respuesta #5 en: 3 Diciembre 2013, 20:09 pm »

EDITO:
primero de nada, elimina esta linea:
Código:
On Error Resume Next

No uses esa instrucción jamás, usa un try/catch ordinario para que, si hubiese error, puedas ser informado del detalle del error.

Aparte de eso, desconozco lo que hace tu método Datos, si el parámetro que recibe la función es ByRef entonces ¿has comprobado si después de llamar a la función el contenido del string "content" es el mismo?,
quiero decir, ¿has comprobado que "content" es string válido antes de parsearlo?,
¿has comprobado también si las mayúsculas/minúsculas de los nodos son correctas? (.<friendslist>.<friends>.<friend> {_friend.<Dato>)).

EDITO 2:
Esto no tiene tanta relevancia, pero la función "Amigos" no devuelve ningún valor ni tampoco le has asignado un datatype de retorno, tu función en realidad es un sub, deberías modifícarlo corréctamente.

EDITO3:

Prueba a hacerlo de esta manera:
Código
  1.    Private Sub Amigos()
  2.  
  3.        Dim reader As IO.StreamReader = Nothing
  4.        Dim content As String = Nothing
  5.        Dim friends = Nothing
  6.  
  7.        Try
  8.  
  9.            reader = New IO.StreamReader(Net.HttpWebRequest.Create("http:\\urlxml").
  10.                                         GetResponse().GetResponseStream())
  11.  
  12.            content = reader.ReadToEnd()
  13.  
  14.            Datos(content)
  15.  
  16.            friends = From _friend As XElement
  17.                       In XDocument.Parse(content).<friendslist>.<friends>.<friend>
  18.                       Select New With {_friend.<Dato>.Value}
  19.  
  20.            ListBox1.Items.AddRange(friends.Select(Function(f) f.Dato).ToArray)
  21.  
  22.        Catch ex As Exception
  23.            MsgBox(ex.Message & ex.StackTrace)
  24.  
  25.        Finally
  26.            reader.Close()
  27.  
  28.        End Try
  29.  
  30.    End Sub

Saludos!
« Última modificación: 3 Diciembre 2013, 20:35 pm por EleKtro H@cker » En línea



TMarmol

Desconectado Desconectado

Mensajes: 89


Just Learning


Ver Perfil WWW
Re: [Ayuda]Xml y Listbox VB.NET
« Respuesta #6 en: 3 Diciembre 2013, 20:33 pm »

EDITO:
primero de nada, elimina esta linea:
Código:
On Error Resume Next

No uses esa instrucción jamás, usa un try/catch ordinario para que, si hubiese error, puedas ser informado del detalle del error.

Aparte de eso, desconozco lo que hace tu método Datos, si el parámetro que recibe la función es ByRef entonces ¿has comprobado si después de llamar a la función el contenido del string "content" es el mismo?,
quiero decir, ¿has comprobado que "content" es string válido antes de parsearlo?,
¿has comprobado también si las mayúsculas/minúsculas de los nodos son correctas? (.<friendslist>.<friends>.<friend> {_friend.<Dato>)).

EDITO 2:
PD: Esto no tiene tanta relevancia, pero la función "Amigos" no devuelve ningún valor ni tampoco le has asignado un datatype de retorno, tu función en realidad es un sub, deberías modifícarlo corréctamente.

Saludos!

He comprobado lo ultimo que me has dicho, el host estaba dando fallos y debido al
Código:
On Error Resume Next
no me lo notificaba, ya he corregido todo lo demás y funciona a la perfeccion, Gracias por tu ayuda y por tu tiempo
Te lo agradezco.
Te mencionare en el "About"  ;D
En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.885



Ver Perfil
Re: [Ayuda]Xml y Listbox VB.NET
« Respuesta #7 en: 3 Diciembre 2013, 20:36 pm »

Te mencionare en el "About"  ;D
xD

De nada, para eso estamos,
me alegro de que lo consiguieras.

PD: le hice una última modificación al código que te propuse en el comentario de arriba, míralo si lo quieres testear.

Saludos
En línea



Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ayuda con listbox
Programación Visual Basic
yofoxD 1 1,806 Último mensaje 12 Marzo 2006, 09:09 am
por NYlOn
como meter un listbox en una tabla de listbox
.NET (C#, VB.NET, ASP)
CrÄsH 3 6,561 Último mensaje 16 Enero 2009, 15:53 pm
por MANULOMM
(ayuda) listbox en vb6
Programación Visual Basic
Psyke1 3 3,300 Último mensaje 31 Marzo 2010, 18:14 pm
por Psyke1
Ayuda con un ListBox
Programación Visual Basic
jacj0102 4 2,568 Último mensaje 23 Mayo 2011, 20:16 pm
por BlackZeroX
Pasar listbox a textbox al hacer click en un valor del listbox
.NET (C#, VB.NET, ASP)
BrokerJoker 3 24,012 Último mensaje 13 Mayo 2012, 17:13 pm
por BrokerJoker
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines