xml и строго типизированные наборы данных с помощью конструктора наборов данных

Я не уверен, возможно ли это, но вот что я хочу сделать: я создал строго типизированный набор данных StrTypDS, используя конструктор наборов данных в Visual Studio. Я также создал пустой XML-файл и добавил его в свой проект в качестве ресурса, чтобы к нему можно было получить доступ через Properties.Resources.xmlData. Я бы хотел прочитать XML-файл и посмотреть, совпадают ли какие-либо данные со схемой моего строго типизированного набора данных. Если есть совпадающие данные, я хочу прочитать их в наборе данных, чтобы я мог их обработать. Если совпадающих данных нет, я хочу записать схему в XML-файл, чтобы я мог хранить там строго типизированные данные для будущих чтений. Как это сделать проще всего?


person PICyourBrain    schedule 19.07.2010    source источник


Ответы (1)


Вы не можете писать в ресурс, потому что файл ресурсов скомпилирован в сборку.

Чтобы попытаться прочитать 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
person Carter Medlin    schedule 20.07.2010