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

标签 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&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

上面的代码工作并写出一行...

某道城LU1 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 /> 

我希望能够拆分这些字段并将它们设置到页面上的不同文本框...帮助?

最佳答案

将 xml 字符串加载到 XmlDocument 中并使用 XPath 提取值:

Dim doc = new XmlDocument()
doc.LoadXml(yourXmlString)
Dim nsm = new XmlNamespaceManager(doc.NameTable)
nsm.AddNamespace("a", "http://site.co.uk/")
txtStreet.Text = doc.SelectSingleNode("/a:Address/a:strStreet", nsm).InnerText

这是一个工作片段:

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

一些注意事项:

  1. 对于 XPath 查找,如果您的 xml 有一个 namespace ,您需要将它添加到 XmlNameSpaceManager从您的 XmlDocument's NameTable 创建.
  2. 如果你不想 打扰那个,你可以通过手动遍历节点集合 doc.ChildNodes[0].ChildNodes[0]

关于asp.net - 如何解析来自 vb.net 中帖子的 xml 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7740694/

相关文章:

c# - SignalR Groups.Add 超时并失败

java - 我有多个布局文件,但应用程序只能识别 1 个?

android - 将操作栏放在按钮上方的线和两个按钮之间的线

javascript - X-Frame-Options Deny 根本不起作用

c# - 使用 Serge Zab 的帮助程序进行 optgroup 下拉菜单时出错

c# - 如何在 Javascript 中设置 ASP.NET 服务器时间

c# - 如何在 .net 3.5 中发送带有返回路径的电子邮件

java - Hibernate二级缓存ehcache.xml,实体的缓存设置无法读取到HIbernate

.net - 是否可以将 CssClass 分配给 CheckBoxList 中的 CheckBox

vb.net - MVC 3 错误处理的正确编码示例