[英]Trying to Read an XML String Into a VB.NET DataTable
我有一個基於以下內容的 XML 字符串...
<imsapi>
<status>0</status>
<statusmessage>Login OK</statusmessage>
<zoneresponse>
<tasks>
<task>
<contact>
<surname>Last Name</surname>
<givennames>First Name</givennames>
<userid>JScqTyVQXFwgCg==</userid>
</contact>
<contactname>User Name</contactname>
<org>
<orgid>JScqTyVRXFQgCg==</orgid>
<orgname>Business Unit Name</orgname>
</org>
<requestdatetime>2019/06/26 08:56:09</requestdatetime>
<status>Not Started</status>
<readtaskdatetime>2019/07/04 12:44:08</readtaskdatetime>
<description>Job description goes here...</description>
<custon>INTERNAL</custon>
<duedate>2020/01/13</duedate>
<lastupdated>2020/01/06</lastupdated>
<jobnumber>2387</jobnumber>
<duedatetime>2020/01/13 00:00:00</duedatetime>
<client>
<clientid>JScqTyVRXFQgCg==</clientid>
<clientname>Client Name</clientname>
</client>
<taskname>Job Name</taskname>
<taskid>JiYqUyVRPEslCg==</taskid>
<lastupdateddatetime>2020/01/06 10:39:44</lastupdateddatetime>
<requestdate>2019/06/26</requestdate>
<tasktype>Manufacturing Order</tasktype>
<substatus>
<substatusid>IyZaVywK</substatusid>
<substatus>Not Started</substatus>
</substatus>
</task>
</tasks>
</zoneresponse>
</imsapi>
我正在將 XML 字符串加載到數據集中以加載到 vb.net 數據網格中。 當我運行我的代碼時,我收到一個錯誤Child list for field task cannot be created
,我無法弄清楚是什么導致了這個問題以及如何解決它。
我的加載代碼是...
dim ds as new DataSet()
ds.ReadXML(New System.IO.StringReader(xmlString))
DataGridView1.DataSource = ds
DataGridView1.DataMember = "task"
XML 正在從 Web 服務器正確加載,因為我可以將它輸出到文本字段而沒有任何問題,只有當我嘗試將它加載到 datagridview 時才出現問題,同時定義任務項是我想要顯示的內容。
您是否缺少關閉的“任務”標簽?
我不是 xml 專家,所以我使用了 xml 檢查器並得到:
發現錯誤! XML 文檔中的錯誤:40: 7 元素類型“tasks”必須由匹配的結束標記“終止
希望有幫助。
您發布的XML是無效的,它缺少了任務的結束標記。 一旦我修復了 XML,就會運行以下代碼。 不知道它會產生你所期望的。
Dim xe As XElement
'you could replace the literal assignment with
' xe = XElement.Load("path here")
xe = <imsapi>
<status>0</status>
<statusmessage>Login OK</statusmessage>
<zoneresponse>
<tasks>
<task>
<contact>
<surname>Last Name</surname>
<givennames>First Name</givennames>
<userid>JScqTyVQXFwgCg==</userid>
</contact>
<contactname>User Name</contactname>
<org>
<orgid>JScqTyVRXFQgCg==</orgid>
<orgname>Business Unit Name</orgname>
</org>
<requestdatetime>2019/06/26 08:56:09</requestdatetime>
<status>Not Started</status>
<readtaskdatetime>2019/07/04 12:44:08</readtaskdatetime>
<description>Job description goes here...</description>
<custon>INTERNAL</custon>
<duedate>2020/01/13</duedate>
<lastupdated>2020/01/06</lastupdated>
<jobnumber>2387</jobnumber>
<duedatetime>2020/01/13 00:00:00</duedatetime>
<client>
<clientid>JScqTyVRXFQgCg==</clientid>
<clientname>Client Name</clientname>
</client>
<taskname>Job Name</taskname>
<taskid>JiYqUyVRPEslCg==</taskid>
<lastupdateddatetime>2020/01/06 10:39:44</lastupdateddatetime>
<requestdate>2019/06/26</requestdate>
<tasktype>Manufacturing Order</tasktype>
<substatus>
<substatusid>IyZaVywK</substatusid>
<substatus>Not Started</substatus>
</substatus>
</task>
</tasks>
</zoneresponse>
</imsapi>
Dim ds As New DataSet()
ds.ReadXml(xe.CreateReader)
DataGridView1.DataSource = ds
DataGridView1.DataMember = "task"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.