Autor
|
Tema: [Ayuda]Xml y Listbox VB.NET (Leído 4,479 veces)
|
TMarmol
Desconectado
Mensajes: 89
Just Learning
|
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í ) con el mismo nombre, necesito que se añadan los valores de esos nodos a un listbox Xml: <friendslist> <friends> <friend> <Dato>Valor</Dato> </friend> <friend> <Dato>Valor</Dato> </friend> <friend> <Dato>Valor</Dato> </friend> <friend> <Dato>Valor</Dato> </friend> <friend> <Dato>Valor</Dato> </friend> </friends> </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: Dim MyDoc As New System.Xml.XmlDocument MyDoc.LoadXml(XmlData) MyDoc.SelectSingleNode("//Nodo/Nodo2/Nodo3/Dato").InnerText
|
|
|
En línea
|
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.885
|
Public Class Form1 ' Genero el documento XML. ReadOnly xml As System.Xml.Linq.XDocument = <?xml version="1.0" encoding="Windows-1252"?> <friendslist> <friends> <friend><Dato>Valor1</Dato></friend> <friend><Dato>Valor2</Dato></friend> <friend><Dato>Valor3</Dato></friend> <friend><Dato>Valor4</Dato></friend> <friend><Dato>Valor5</Dato></friend> </friends> </friendslist> Shadows Sub Load() Handles MyBase.Load ' Proyecto los elementos deseados en un type anónimo. Dim datos = From _friend As System.Xml.Linq.XElement In xml.<friendslist>.<friends>.<friend> Select New With {_friend.<Dato>.Value} ' Añado el miembro "Dato" al Listbox. ListBox1.Items.AddRange(datos.Select(Function(element) element.Dato).ToArray) End Sub End Class
Saludos
|
|
« Última modificación: 3 Diciembre 2013, 19:33 pm por EleKtro H@cker »
|
En línea
|
|
|
|
TMarmol
Desconectado
Mensajes: 89
Just Learning
|
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 Dim web As WebClient = New WebClient() Dim stream As Stream = web.OpenRead("http://URLDEPAGINAWEBCONXML") Dim reader As StreamReader = New StreamReader(stream) Dim content As String = reader.ReadToEnd Datos(content) ' --Una función que tengo en otra parte Dim MyDoc As New System.Xml.XmlDocument MyDoc.LoadXml(content) Dim doc As XDocument = XDocument.Parse(content) Dim datas = (From _friend In doc.<friendslist>.<friends>.<friend> Select New With {_friend.<Dato>.Value}) ListBox1.Items.AddRange(datas.Select(Function(x) x.Dato).ToArray)
|
|
|
En línea
|
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.885
|
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: Dim datos = From _friend As System.Xml.Linq.XElement In XDocument.Parse(xml).<friendslist>.<friends>.<friend> 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: Dim MyDoc As New System.Xml.XmlDocument MyDoc.LoadXml(content)
PD: también puedes hacerlo todo de una: ListBox1.Items.AddRange( (From _friend As XElement In XDocument.Parse(xml).<friendslist>.<friends>.<friend> Select New With {_friend.<Dato>.Value} ).Select(Function(element) element.Dato).ToArray )
saludos
|
|
« Última modificación: 3 Diciembre 2013, 19:56 pm por EleKtro H@cker »
|
En línea
|
|
|
|
TMarmol
Desconectado
Mensajes: 89
Just Learning
|
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 Public Function Amigos() On Error Resume Next Dim web As WebClient = New WebClient() Dim stream As Stream = web.OpenRead("http://URLXML") Dim reader As StreamReader = New StreamReader(stream) Dim content As String = reader.ReadToEnd Datos(content) Dim datas = From _friend As System.Xml.Linq.XElement In System.Xml.Linq.XDocument.Parse(content).<friendslist>.<friends>.<friend> Select New With {_friend.<Dato>.Value} ListBox1.Items.AddRange(datas.Select(Function(element) element.Dato).ToArray) End Function
|
|
|
En línea
|
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.885
|
EDITO:primero de nada, elimina esta linea: 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: Private Sub Amigos() Dim reader As IO.StreamReader = Nothing Dim content As String = Nothing Dim friends = Nothing Try reader = New IO.StreamReader(Net.HttpWebRequest.Create("http:\\urlxml"). GetResponse().GetResponseStream()) content = reader.ReadToEnd() Datos(content) friends = From _friend As XElement In XDocument.Parse(content).<friendslist>.<friends>.<friend> Select New With {_friend.<Dato>.Value} ListBox1.Items.AddRange(friends.Select(Function(f) f.Dato).ToArray) Catch ex As Exception MsgBox(ex.Message & ex.StackTrace) Finally reader.Close() End Try End Sub
Saludos!
|
|
« Última modificación: 3 Diciembre 2013, 20:35 pm por EleKtro H@cker »
|
En línea
|
|
|
|
TMarmol
Desconectado
Mensajes: 89
Just Learning
|
EDITO:primero de nada, elimina esta linea: 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 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"
|
|
|
En línea
|
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.885
|
Te mencionare en el "About" 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
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Ayuda con listbox
Programación Visual Basic
|
yofoxD
|
1
|
1,806
|
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
|
16 Enero 2009, 15:53 pm
por MANULOMM
|
|
|
(ayuda) listbox en vb6
Programación Visual Basic
|
Psyke1
|
3
|
3,300
|
31 Marzo 2010, 18:14 pm
por Psyke1
|
|
|
Ayuda con un ListBox
Programación Visual Basic
|
jacj0102
|
4
|
2,568
|
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
|
13 Mayo 2012, 17:13 pm
por BrokerJoker
|
|