У меня есть веб-служба, которая возвращает XML.Сборка XML-таблицы с использованием VB 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]]>
Я пытаюсь вытащить эти данные в DataGridView с помощью vb.net
Беда в том, что только возвращает значения, основанные на иерархии верхнего уровня, так что я получаю таблицу с заголовком столбца " 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
Я ищу некоторую помощь о том, как тянуть обратно правильные значения для создания таблицы.
Спасибо,
Спасибо, но мой исходный код вытащил XML с помощью веб-службы. Код, который вы предоставили, по-видимому, имеет статический ввод «Dim input As String =». Я что-то упускаю? Спасибо – user3580480
Да, да, да. Помещение XML непосредственно в набор данных заканчивается данными, идущими вниз по строкам, а не по столбцам. Вам нужно поместить XML в XDocument, затем проанализировать документ. После того, как вы получите XML, вам нужно поместить XML в документ, используя XDocument.Parse (XML-строку). – jdweng