【问题标题】:Visual basic 'System.Xml.XmlException' occurred in System.Xml.dll errorVisual basic 'System.Xml.XmlException' 发生在 System.Xml.dll 错误中
【发布时间】:2015-06-11 16:50:14
【问题描述】:

我正在尝试编写代码来获取 IP GEO 信息。

这是我的代码:

Imports System.Xml
Public Class Form1

Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
End Sub

Private Sub geo()
    Dim xmldoc As New XmlDocument
    Dim xmlnode As XmlNodeList
    Dim i As Integer
    xmldoc.Load("http://freegeoip.cnet/xml/" & TextBox1.Text)// this is where I get the Error
    xmlnode = xmldoc.GetElementsByTagName("Respon­se")
    For i = 0 To xmlnode.Count - 1
        Label1.Text = "IP Address : " & xmlnode(i).ChildNodes.Item(0).InnerText.Trim()
        Label2.Text = "Country Code : " & xmlnode(i).ChildNodes.Item(0).InnerText.Trim()
        Label3.Text = "Country Name : " & xmlnode(i).ChildNodes.Item(1).InnerText.Trim()
        Label4.Text = "Region Code : " & xmlnode(i).ChildNodes.Item(2).InnerText.Trim()
        Label5.Text = "Region Name : " & xmlnode(i).ChildNodes.Item(3).InnerText.Trim()
        Label6.Text = "City : " & xmlnode(i).ChildNodes.Item(4).InnerText.Trim()
        Label7.Text = "Zip Code : " & xmlnode(i).ChildNodes.Item(5).InnerText.Trim()
        Label8.Text = "Latitude : " & xmlnode(i).ChildNodes.Item(6).InnerText.Trim()
        Label9.Text = "Longitude : " & xmlnode(i).ChildNodes.Item(7).InnerText.Trim()
        Label10.Text = "Metro Code : " & xmlnode(i).ChildNodes.Item(8).InnerText.Trim()
        xmlnode(i).ChildNodes.Item(9).InnerText.Trim()

    Next

End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    geo()
End Sub
End Class

这是错误信息:

System.Xml.dll 中发生“System.Xml.XmlException”

有人知道为什么吗?

【问题讨论】:

  • 请显示 full 堆栈跟踪,包括错误消息。异常对它们来说更多不仅仅是类型的名称......
  • 对不起,我是这个编程的新手,如何获得完整的堆栈跟踪?
  • 好吧,我们根本不知道您在哪里看到了错误 - 但我希望它在那里。 (提示:如果你把它转换成一个简短但完整的控制台应用程序,包括完整的 URL,代码会更短,我们将能够重现它,并且在运行它时你会看到完整的堆栈跟踪...)
  • 在 xmldoc.Load 周围装饰一个 try..catch 并检查 textbox1 的值。

标签: c# xml vb.net


【解决方案1】:

您没有向网站传递正确的参数。下面是从 freegeoip 返回的数据示例。

Imports System.Xml
Module Module1

    Sub Main()
        Dim input As String =
            "<?xml version=""1.0"" encoding=""UTF-8""?>" & _
               "<Response>" & _
                  "<IP>123.123.123.123</IP>" & _
                  "<CountryCode>CN</CountryCode>" & _
                  "<CountryName>China</CountryName>" & _
                  "<RegionCode>11</RegionCode>" & _
                  "<RegionName>Beijing Shi</RegionName>" & _
                  "<City>Beijing</City>" & _
                  "<ZipCode/>" & _
                  "<TimeZone>Asia/Shanghai</TimeZone>" & _
                  "<Latitude>39.929</Latitude>" & _
                  "<Longitude>116.388</Longitude>" & _
                  "<MetroCode>0</MetroCode></Response>"
        Dim xmldoc As New XmlDocument
        xmldoc.LoadXml(input)

    End Sub

End Module​

【讨论】:

    猜你喜欢
    • 2015-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多