0
我有一個返回XML的Web服務。使用VB構建XML表Datagridview
下面是返回的代碼示例。
<?xml version="1.0" encoding="UTF-8"?>
-<response uri="/crm/private/xml/Accounts/getRecords">
-<result>
-<Accounts>
-<row no="1">
<FL val="ACCOUNTID">1202xxx000000121001</FL>
<FL val="SMOWNERID">1202xxx000000071001</FL>
-<FL val="Account Owner">
<![CDATA[Fred Smith]]>
</FL>
-<FL val="Account Name">
<![CDATA[The Oaks Dental Practice]]>
</FL>
-<FL val="Phone">
<![CDATA[01202 123123]]>
</FL>
-<FL val="Account Number">
<![CDATA[0]]>
</FL>
-<FL val="Account Type">
<![CDATA[Prospect]]>
</FL>
-<FL val="Employees">
<![CDATA[0]]>
我想用vb.net
麻煩的是它只返回基於頂級層次結構值,該數據拉入一個DataGridView,所以我得到一個表的列標題「 uri「和值」/ crm/private/xml/Accounts/getRecords「
如果我使用更簡單的XML結構,例如http://www.w3schools.com/xml/simple.xml它工作正常。
這裏是我的vb.net代碼:
Imports System.Data
Imports System.Net
Public Class Form1
Public Shared Sub DataSetSample1()
Dim request As HttpWebRequest
Dim response As HttpWebResponse = Nothing
Dim dsWeather As DataSet
Try
' Create the web request
request = DirectCast(WebRequest.Create(_
"https://crm.zoho.com/crm/private/xml/Accounts/getRecords?authtoken=????????3bb1c27c3116dc6b0275ea91&scope=crmapi"), HttpWebRequest)
' Get response
response = DirectCast(request.GetResponse(), HttpWebResponse)
' Load data into a dataset
dsWeather = New DataSet()
dsWeather.ReadXml(response.GetResponseStream())
' Print dataset information
PrintDataSet(dsWeather)
Finally
If Not response Is Nothing Then response.Close()
End Try
Form1.DataGridView2.DataSource = dsWeather.Tables(0)
End Sub
Public Shared Sub PrintDataSet(ByVal ds As DataSet)
' Print out all tables and their columns
For Each table As DataTable In ds.Tables
Console.WriteLine("TABLE '{0}'", table.TableName)
Console.WriteLine("Total # of rows: {0}", table.Rows.Count)
Console.WriteLine("---------------------------------------------------------------")
For Each column As DataColumn In table.Columns
Console.WriteLine("- {0} ({1})", column.ColumnName, column.DataType.ToString())
Next ' For Each column
Console.WriteLine(System.Environment.NewLine)
Next ' For Each table ' Print out table relations
For Each relation As DataRelation In ds.Relations
Console.WriteLine("RELATION: {0}", relation.RelationName)
Console.WriteLine("---------------------------------------------------------------")
Console.WriteLine("Parent: {0}", relation.ParentTable.TableName)
Console.WriteLine("Child: {0}", relation.ChildTable.TableName)
Console.WriteLine(System.Environment.NewLine)
Next ' For Each relation
End Sub
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
DataSetSample1()
End Sub
End Class
我正在尋找如何拉回到正確的價值觀建表一些幫助。
感謝,
謝謝,但我原來的代碼通過Web服務拉着XML。你提供的代碼似乎有一個靜態輸入「Dim input As String =」。我錯過了什麼嗎?謝謝 – user3580480
是的,是的,是的。將XML直接放入數據集最終會導致數據沿行而不是整列排列。您需要將XML放入XDocument中,然後解析文檔。一旦獲得了XML,就需要使用XDocument.Parse(XML字符串)將XML放入文檔中。 – jdweng