簡體   English   中英

試圖在VB.net中寫入Xml

[英]trying to writeXml in VB.net

更新感謝vlam,我現在按照您的建議寫入Stream,我得到了一個XML文件,沒有更多錯誤,我的XML文件中只有這個文件,沒有數據,

<?xml version="1.0"?>
<RoboDataSet/>

為什么我沒有數據?

我在表單上有一個datagridview和一個數據集。 表單打開,我在前兩行中輸入數據,然后單擊添加到表單中的寫入XML按鈕。 按鈕和WriteXML的代碼在這里。 它創建一個文件,該文件為空。 但是,當它嘗試執行RoboDataSet.WriteXml(filename)命令時,出現錯誤。

當我在DataGridView中鍵入數據后,該數據是否此時保存在DataGridView和DataSet中?

我有一個消息框,顯示我們有數據,因此我相信輸入的數據在數據集中。 然后,執行代碼,然后看到在c:\\ data中創建的文件,然后在RoboDataSet.WriteXml(filename)命令中收到此錯誤;

所以有幾個問題,為什么我會得到使用的錯誤,嘗試寫入XML的過程是相同的,正確嗎?

我根據看到的MS示例嘗試了2種不同的方法,

Example 1
Dim stream As New System.IO.FileStream _
    (filename, System.IO.FileMode.Create)
 thisDataSet.WriteXml(stream)

Example 2
Dim filename As String = "XmlDoc.xml"
thisDataSet.WriteXml(filename)

這是我的代碼不起作用;

Private Sub WriteXml_Click(sender As Object, e As EventArgs) Handles WriteXml.Click
    WriteXmlToFile(RoboDataSet)
End Sub

Private Sub WriteXmlToFile(RoboDataSet As DataSet)
    If RoboDataSet Is Nothing Then
        MessageBox.Show("dataset empty")
    Else
        MessageBox.Show("We have data")
    End If
    Dim filename As String = "c:\data\write4.xml"
    Dim Stream As New System.IO.FileStream _
        (filename, System.IO.FileMode.Create)
    RoboDataSet.WriteXml(filename)




End Sub

任何幫助都很好,謝謝

謝謝vlam,我現在按照您的建議寫給Stream,我得到了一個XML文件,沒有更多錯誤,我的XML文件只有這個,沒有數據,

為什么我沒有數據?

應該寫入流而不是文件名。 也僅在數據集不為空時寫入。

Private Sub WriteXmlToFile(RoboDataSet As DataSet)
    If RoboDataSet Is Nothing Then
        MessageBox.Show("dataset empty")
    Else
        MessageBox.Show("We have data")
        Dim filename As String = "c:\data\write4.xml"
        Dim Stream As New System.IO.FileStream(filename, System.IO.FileMode.Create)
        RoboDataSet.WriteXml(Stream)
    End If
End Sub

FileStream類實現IDisposable,因此需要關閉並處理它。 (避免泄漏非托管資源,文件句柄等)

即使出現錯誤,Using塊也將處理此問題。

這個答案與@Vlam的答案相同,只是增加了Using塊。 @Vlam是診斷錯誤的人,因此請接受該答案,但要添加Using塊。

Private Sub WriteXmlToFile(RoboDataSet As DataSet)
    If RoboDataSet Is Nothing Then
        MessageBox.Show("The DataSet does not exist.")
        Return
    End If
    '**EDIT**
    For Each t As DataTable In RoboDataSet.Tables
        Debug.Print(t.Rows.Count.ToString)
    Next
    '**END EDIT**

    Dim filename As String = "c:\data\write4.xml"
    Using Stream As New System.IO.FileStream(filename, System.IO.FileMode.Create)
        RoboDataSet.WriteXml(Stream)
    End Using
End Sub

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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