• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Weasel

Ler um ficheiro XML e filtrar os dados

5 mensagens neste tópico

Pessoal eu tenho este XML:

<iplist>
<computer>
<id>PC001</id>
<name>Utilizador xpto</name>
<ip>200.200.200.200</ip>
</computer>
<computer>
<id>PC002</id>
<name>Utilizador AAA</name>
<ip>200.200.200.105</ip>
</computer>
</iplist>

E pretendo carregar estes dados para uma Classe (como aprendi no blog do jpaulino, obrigado!)

Public Class Computer
        Implements IEquatable(Of Computer)

        Public Id As String
        Public Name As String
        Public Ip As String

        Public Function FindPC(ByVal PCname As Computer) As Boolean Implements System.IEquatable(Of Computer).Equals
            Return Me.Name = PCname.Name
        End Function
    End Class

Eu já consegui ler o ficheiro XML e apresentar o conteúdo num textbox por exemplo, mas não consigo saber quando estou no Item <id> para ir buscar o seu valor, o mesmo para o <name> e para o <ip>.

Eu estava a tentar assim mas é alto FAIL

Dim xmlDoc As New Xml.XmlDocument
            xmlDoc.Load(xmlFile)
            Dim nodeList As Xml.XmlNodeList = xmlDoc.SelectNodes("//computer")
            If nodeList IsNot Nothing Then
                For Each node As Xml.XmlNode In nodeList
                    Dim pc As New Computer
                    pc.Id = node.Attributes("id").ToString
                    pc.Name = node.Attributes("name").ToString
                    pc.Ip = node.Attributes("ip").ToString
                    Computerlst.Add(pc)
                    pc = Nothing
                Next
            End If

Já andei à procura mas só encontro como listar o ficheiro XML, mas eu queria filtrar os dados contidos nele...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pesquisar por XML é complicado (só tem 3 letras).

Acabei por encontrar a solução ao meu problema dada pelo jpaulino noutro tópico:

Dim xmlDoc As New Xml.XmlDocument
            xmlDoc.Load(xmlFile)

            Dim node As XmlNode = xmlDoc.SelectSingleNode("//iplist")

            If node IsNot Nothing Then
                For x As Integer = 0 To node.ChildNodes.Count - 1

                    With node.ChildNodes.Item(x)
                        Debug.WriteLine("ID: " & .ChildNodes(0).InnerText.ToString)
                        Debug.WriteLine("Name: " & .ChildNodes(1).InnerText.ToString)
                        Debug.WriteLine("IP: " & .ChildNodes(2).InnerText.ToString)
                    End With

                Next
            End If

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pesquisar por XML é complicado (só tem 3 letras).

LOL

É verdade :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

outra forma é carregar o XML para um Dataset/Datatable

 
string pXMLStr = @"   <iplist>
                                <computer>
                                <id>PC001</id>
                                <name>Utilizador xpto</name>
                                <ip>200.200.200.200</ip>
                                </computer>
                                <computer>
                                <id>PC002</id>
                                <name>Utilizador AAA</name>
                                <ip>200.200.200.105</ip>
                                </computer>
                                </iplist>
                            ";

using(DataSet d = new DataSet()){
d.ReadXml(new System.IO.StringReader(pXMLStr));            
foreach (DataRow r in d.Tables[0].Rows)
  Console.WriteLine(string.Format("ID={0}",r["id"]));
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Se for para carregar num DataSet/DataTable, é mais simples utilizar um DataView para filtrar os dados do que criar um ciclo em toda a DataTable.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora