XML数据到列表框

时间:2013-12-26 18:33:08

标签: xml vb.net

我有一个XML文件,其中包含有关服务器的数据。国家和服务器的IP。

<?xml version="1.0"?>
<servers>

<server>
   <location>Belgium</location>
   <ip>192.168.0.1</ip>
</server>

<server>
    <location>The Netherlands</location>
    <ip>127.0.0.6</ip>
</server>

</servers>

我想在列表框的一行中将位置名称+ IP + ping添加到IP中,依此类推每个服务器。

这是我的代码到目前为止,但它只告诉我的位置。我不知道如何将IP和ping附加到IP。

Dim xr As XmlReader = XmlReader.Create("http://127.0.0.1/servers.xml")
Do While xr.Read()
    If xr.NodeType = XmlNodeType.Element AndAlso xr.Name = "location" Then
        lsbServers.Items.Add(xr.ReadElementString)
    Else
        xr.Read()
    End If
Loop

如何将IP和ping添加到列表框中的位置?

2 个答案:

答案 0 :(得分:3)

XmlReader类对某些任务很有用,但是,按照设计,它一次只检查一个节点。在这种情况下,您需要以随机访问方式一次访问多个元素,使用XmlDocumentXDocument类会更容易。例如:

Dim doc As New XmlDocument()
doc.Load("http://127.0.0.1/servers.xml")
For Each serverNode As XmlNode In doc.SelectNodes("/servers/server")
    Dim location As String = serverNode.SelectSingleNode("location").InnerText
    Dim ip As String = serverNode.SelectSingleNode("ip").InnerText
Next

或者,

Dim doc As XDocument = XDocument.Load("http://127.0.0.1/servers.xml")
For Each serverElement As XElement In doc.<servers>.<server>
    Dim location As String = serverElement.<location>.Value
    Dim ip As String = serverElement.<ip>.Value
Next

然后,当您将项目添加到列表框中时,您可以将数据连接成一个字符串和/或将其格式化,例如:

lsbServers.Items.Add(location & " - " & ip)) 

或者:

lsbServers.Items.Add(String.Format("{0} ({1})", location, ip)) 

但是,如果列表中的每个项目有多个数据,您可能需要考虑使用支持显示多列数据的控件,例如ListViewDataGrid控件。 (为了显示ListView控件中的列,您需要将View属性设置为Details。)

答案 1 :(得分:1)

我会使用LINQ to XML:

Dim xr As XmlReader = XmlReader.Create("http://127.0.0.1/servers.xml")
Dim xDoc As XDocument = XDocument.Load(xr)

For Each server as XElement In xDoc.Root.Elements("server")
    Dim location As String = CType(server.Element("location"), String)
    Dim ip As String = CType(server.Element("ip"), String)
    ' your ping logic goes here '
    Dim ping as String = GetPing(ip)

    lsbServers.Items.Add(String.Format("{0} - {1} - {2}", location, ip, ping))
Next