具有数据集设计器的xml和强类型数据集

时间:2010-07-19 15:33:28

标签: xml visual-studio strongly-typed-dataset

我不确定这是否可行,但这是我想要做的:我使用Visual Studio中的数据集设计器创建了一个强类型数据集StrTypDS。我还创建了一个空白的xml文件,并将其作为资源添加到我的项目中,以便可以通过Properties.Resources.xmlData访问它。我想要做的是读取xml文件,看看是否有任何数据与我的强类型数据集的模式匹配。如果有匹配的数据,我想将其读入数据集,以便我可以处理它。如果没有匹配的数据,我想将模式写入xml文件,以便我可以存储强类型数据以供将来读取。最简单的方法是什么?

1 个答案:

答案 0 :(得分:0)

您无法写入资源,因为资源文件已编译到程序集中。

要尝试将xml文件读入强类型数据集,请使用此示例(VB.NET)...

我创建了两个带有不同模式的类型化数据集ds1和ds2。我写出了两个没有模式的样本xml数据文件。然后我尝试读取文件夹中的每个xml文件,以找到与我的目标强类型数据集匹配的xml文件。如果我的目标数据集在读取尝试后其中包含数据,则架构是匹配的。

Private Const InputFolder As String = "C:\xmlinputdata\"


Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    WriteTestXML()

    For Each s In IO.Directory.GetFiles(InputFolder, "*.xml")
        Dim dsTarget As New ds1

        dsTarget.ReadXml(s, Data.XmlReadMode.IgnoreSchema)

        If DatasetHasData(dsTarget) Then
            MsgBox(dsTarget.GetXml)
        End If
    Next

End Sub

Private Function DatasetHasData(ByVal ds As Data.DataSet) As Boolean
    For Each dt As Data.DataTable In ds.Tables
        If dt.Rows.Count > 0 Then
            Return True
        End If
    Next

    Return False
End Function

Private Sub WriteTestXML()
    Dim x As New ds1
    x.dt1.Adddt1Row("A", "B")
    x.dt1.Adddt1Row("C", "D")

    x.WriteXml(InputFolder & "ds1.xml", Data.XmlWriteMode.IgnoreSchema)

    Dim y As New ds2
    With y.dt2
        .Adddt2Row(1, 2, 3)
        .Adddt2Row(4, 5, 6)
    End With

    y.WriteXml(InputFolder & "ds2.xml", Data.XmlWriteMode.IgnoreSchema)
End Sub