尝试在VB.net中编写XML
更新 谢谢vlam,我现在按照您的建议向Stream写信,我得到了一个XML文件,没有更多的错误,我的XML文件只有这个,没有数据尝试在VB.net中编写XML,vb.net,writexml,Vb.net,Writexml,更新 谢谢vlam,我现在按照您的建议向Stream写信,我得到了一个XML文件,没有更多的错误,我的XML文件只有这个,没有数据 <?xml version="1.0"?> <RoboDataSet/> 这是我不起作用的代码 Private Sub WriteXml_Click(sender As Object, e As EventArgs) Handles WriteXml.Click WriteXmlToFile(RoboDataSet) End Sub
<?xml version="1.0"?>
<RoboDataSet/>
这是我不起作用的代码
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
检查数据集是否为Nothing与它是否包含任何数据无关。我的错误是,应该检查Nothing。数据集不是空的。您已将
.WriteXML(流)
重载与混合。WriteXML(字符串)也可以工作,但创建流时,流正忙于使用创建的文件。因此,当您尝试使用
.WriteXML(String)`时,它将失败;谢谢,我正在使用Vlam的建议,并将添加您的建议,但现在我得到了一个xml文件,其中仅包含此内容;我怀疑您的数据集中没有数据。查看我的编辑以进行检查。您的编辑没有显示任何内容,但我输入了数据。我尝试使用datagridview绑定和未绑定,没有任何更改。显然,我缺少一些新的内容。我想您需要一个新问题,显示您用于创建数据集的代码以及它如何绑定到datagridview。解释数据是如何输入的,并询问为什么数据集中没有显示数据。
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