尝试在vb.net中写入xml

  • 本文关键字:xml net vb vb.net writexml
  • 更新时间 :
  • 英文 :


更新谢谢Vlam,我现在按照您的建议写信,我会收到一个XML文件,而没有更多错误,我的XML文件只有此,没有数据,

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

为什么我没有数据?

我在表单上有一个datagridview和一个数据集。表单打开,我在前2行中键入数据,然后单击我添加到表单中的写XML按钮。按钮的代码和writexml在这里。它创建一个空的文件。但是,当它试图执行Robodataset.writexml(文件名)命令时,我会发现一个错误。

在DataGridView中键入数据后

我有一个消息框,显示我们的数据,所以我相信我输入的数据在数据集中。然后,我执行代码,然后看到在C: Data中创建的文件,然后在Robodataset.writexml(filename)命令上命令我获取此错误;

>

所以几个问题,为什么我要使用错误,这是同一过程,试图写入xml,正确?

我尝试了两种不同的方法,根据我看到的MS示例,

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:datawrite4.xml"
    Dim Stream As New System.IO.FileStream _
        (filename, System.IO.FileMode.Create)
    RoboDataSet.WriteXml(filename)


End Sub

任何帮助都会很棒,谢谢

谢谢Vlam,我现在按照您的建议写作,我收到一个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:datawrite4.xml"
        Dim Stream As New System.IO.FileStream(filename, System.IO.FileMode.Create)
        RoboDataSet.WriteXml(Stream)
    End If
End Sub

FileStream类实现Idisposable,因此需要关闭和处置。(避免泄漏未管理的资源,文件处理等)

即使存在错误,使用块也会处理这一点。

此答案与@vlam的答案相同,并添加了使用块。@Vlam是诊断出错误的人,所以请接受该答案,但请添加使用块。

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:datawrite4.xml"
    Using Stream As New System.IO.FileStream(filename, System.IO.FileMode.Create)
        RoboDataSet.WriteXml(Stream)
    End Using
End Sub

相关内容

  • 没有找到相关文章

最新更新