簡體   English   中英

嘗試將 XML 字符串讀入 VB.NET 數據表

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM