2010-07-19 59 views
2

我不確定這是否可能,但這是我想要做的:我已經使用Visual Studio中的數據集設計器創建了一個強類型數據集StrTypDS。我也創建了一個空白的xml文件,並將其作爲資源添加到我的項目中,以便通過Properties.Resources.xmlData訪問它。我想要做的是讀取xml文件,並查看是否有任何數據與我的強類型數據集的模式相匹配。如果有匹配的數據,我想將其讀入數據集以便我可以處理它。如果沒有匹配的數據,我想將模式寫入xml文件,以便我可以將強類型數據存儲在那裏以供將來讀取。什麼是最簡單的方法來做到這一點?xml和使用數據集設計器的強類型數據集

回答

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