Asp.net 如何在vb.net中解析来自帖子的xml响应

Asp.net 如何在vb.net中解析来自帖子的xml响应,asp.net,xml,vb.net,http-post,Asp.net,Xml,Vb.net,Http Post,我在一个网站上发帖以获取数据。该站点将其作为xml返回。我能够将数据转换成字符串。但我真正想做的是让xml中的每个项都位于不同的字符串字段中 Sub lookup(ByVal Source As Object, ByVal e As EventArgs) Dim wData As String wData = WRequest("http://PostToThisSite.com", "POST","str=31&Password=pn&UserID=Q&Post

我在一个网站上发帖以获取数据。该站点将其作为xml返回。我能够将数据转换成字符串。但我真正想做的是让xml中的每个项都位于不同的字符串字段中

Sub lookup(ByVal Source As Object, ByVal e As EventArgs)
  Dim wData As String
  wData = WRequest("http://PostToThisSite.com", "POST","str=31&Password=pn&UserID=Q&Postcode="+txtPcode.Text)       
  Response.Write(wData)
End Sub

Function WRequest(URL As String, method As String, POSTdata As String) As String
    Dim responseData As String = ""
      Try
        Dim hwrequest As Net.HttpWebRequest = Net.Webrequest.Create(URL)
        hwrequest.Accept = "*/*"
        hwrequest.AllowAutoRedirect = true
        hwrequest.UserAgent = "http_requester/0.1"
        hwrequest.Timeout = 60000
        hwrequest.Method = method
        If hwrequest.Method = "POST" Then
          hwrequest.ContentType = "application/x-www-form-urlencoded"
          Dim encoding As New Text.ASCIIEncoding() 'Use UTF8Encoding for XML requests
          Dim postByteArray() As Byte = encoding.GetBytes(POSTdata)
          hwrequest.ContentLength = postByteArray.Length
          Dim postStream As IO.Stream = hwrequest.GetRequestStream()
          postStream.Write(postByteArray, 0, postByteArray.Length)
          postStream.Close()
        End If
        Dim hwresponse As Net.HttpWebResponse = hwrequest.GetResponse()
        If hwresponse.StatusCode = Net.HttpStatusCode.OK Then
          Dim responseStream As IO.StreamReader = _
            New IO.StreamReader(hwresponse.GetResponseStream())
          responseData = responseStream.ReadToEnd()
        End If
        hwresponse.Close()
        Catch e As Exception
          responseData = "An error occurred: " & e.Message
        End Try
      Return responseData
End Function
上面的代码工作并写出一行

某路城市路1 5QG

返回的Xml为

<Address xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://site.co.uk/">
  <strOrganisation /> 
  <strProperty /> 
  <strStreet>Some Road</strStreet> 
  <strLocality /> 
  <strTown>City</strTown> 
  <strCounty /> 
  <strPostcode>LU1 5QG</strPostcode> 
  <strDPS /> 

某条路
城市
LU1 5QG

我希望能够拆分这些字段并将其设置为页面上的不同文本框…帮助?

将xml字符串加载到中,并使用以下内容提取值:

下面是一个工作片段:

Dim doc = New XmlDocument()
doc.LoadXml("<Address xmlns:xsd=""http://www.w3.org/2001/XMLSchema"" xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xmlns=""http://site.co.uk/""><strOrganisation /> <strProperty /> <strStreet>Some Road</strStreet> <strLocality /> <strTown>City</strTown> <strCounty /> <strPostcode>LU1 5QG</strPostcode><strDPS /></Address>")
Dim nsm = New XmlNamespaceManager(doc.NameTable)
nsm.AddNamespace("a", "http://site.co.uk/")
Dim streetValue = doc.SelectSingleNode("/a:Address/a:strStreet", nsm).InnerText
Dim doc=New XmlDocument()
LoadXml(“从您的
  • 如果你不想 麻烦的是,您可以通过
    doc.ChildNodes[0].ChildNodes[0]
    etc

  • 将xml字符串加载到中,并使用以下命令提取值:

    下面是一个工作片段:

    Dim doc = New XmlDocument()
    doc.LoadXml("<Address xmlns:xsd=""http://www.w3.org/2001/XMLSchema"" xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xmlns=""http://site.co.uk/""><strOrganisation /> <strProperty /> <strStreet>Some Road</strStreet> <strLocality /> <strTown>City</strTown> <strCounty /> <strPostcode>LU1 5QG</strPostcode><strDPS /></Address>")
    Dim nsm = New XmlNamespaceManager(doc.NameTable)
    nsm.AddNamespace("a", "http://site.co.uk/")
    Dim streetValue = doc.SelectSingleNode("/a:Address/a:strStreet", nsm).InnerText
    
    Dim doc=New XmlDocument()
    LoadXml(“从您的
    
  • 如果你不想 麻烦的是,您可以通过
    doc.ChildNodes[0].ChildNodes[0]
    etc

  • 或者试试这个,我相信这就是作者所问的

    '使用XML读取器

            Dim xmlDoc = New XmlDocument
            Dim xmlNode As Xml.XmlNode
            xmlDoc.LoadXml(strResponse)
    
            xmlNode = xmlDoc.SelectSingleNode("//" + "strStreet")
    
            If Not xmlNode Is Nothing Then
                Dim Street = xmlNode.InnerText
            End If
    

    或者试试这个,我相信这就是作者所问的

    '使用XML读取器

            Dim xmlDoc = New XmlDocument
            Dim xmlNode As Xml.XmlNode
            xmlDoc.LoadXml(strResponse)
    
            xmlNode = xmlDoc.SelectSingleNode("//" + "strStreet")
    
            If Not xmlNode Is Nothing Then
                Dim Street = xmlNode.InnerText
            End If
    

    System.NullReferenceException:对象引用未设置为对象的实例。Address元素已终止,错误发生在txtStreet.Text=doc.SelectSingleNode(“/Address/strStreet”).ValueSystem.NullReferenceException:对象引用未设置为对象的实例。Address元素已终止,txtStreet.Text=doc.SelectSingleNode(“/Address/Strestreet”)处出错。值