Delen via


DataSet- en XmlDataDocument-synchronisatie

De ADO.NET DataSet biedt u een relationele weergave van gegevens. Voor hiërarchische gegevenstoegang kunt u de XML-klassen gebruiken die beschikbaar zijn in .NET Framework. In het verleden zijn deze twee weergaven van gegevens afzonderlijk gebruikt. Met .NET Framework is echter realtime, synchrone toegang mogelijk tot zowel de relationele als hiërarchische weergave van gegevens via het DataSet-object en het XmlDataDocument object.

Wanneer een DataSet wordt gesynchroniseerd met een XmlDataDocument, werken beide objecten met één set gegevens. Dit betekent dat als er een wijziging wordt aangebracht in de DataSet, de wijziging wordt doorgevoerd in het XmlDataDocument en vice versa. De relatie tussen de DataSet en xmlDataDocumentcreëert grote flexibiliteit doordat één toepassing, met behulp van één set gegevens, toegang heeft tot de volledige suite met services die zijn gebouwd rond de DataSet (zoals webformulieren en Windows Forms-besturingselementen, en Visual Studio .NET-ontwerpers), evenals de suite met XML-services, waaronder Extensible Stylesheet Language (XSL), XSL-transformaties (XSLT) en XML Path Language (XPath). U hoeft niet te kiezen welke set services u wilt targeten met de toepassing; beide zijn beschikbaar.

Er zijn verschillende manieren waarop u een DataSet kunt synchroniseren met een XmlDataDocument. U kunt:

  • Vul een DataSet in met een schema (een relationele structuur) en gegevens en synchroniseer deze vervolgens met een nieuw XmlDataDocument. Dit biedt een hiërarchische weergave van bestaande relationele gegevens. Voorbeeld:

    Dim dataSet As DataSet = New DataSet  
    
    ' Add code here to populate the DataSet with schema and data.  
    
    Dim xmlDoc As XmlDataDocument = New XmlDataDocument(dataSet)  
    
    DataSet dataSet = new DataSet();  
    
    // Add code here to populate the DataSet with schema and data.  
    
    XmlDataDocument xmlDoc = new XmlDataDocument(dataSet);  
    
  • Vul een DataSet alleen in met een schema (zoals een sterk getypte DataSet), synchroniseer deze met een XmlDataDocument en laad vervolgens het XmlDataDocument uit een XML-document. Dit biedt een relationele weergave van bestaande hiërarchische gegevens. De tabelnamen en kolomnamen in uw DataSet-schema moeten overeenkomen met de namen van de XML-elementen waarmee u ze wilt synchroniseren. Deze overeenkomst is hoofdlettergevoelig.

    Houd er rekening mee dat het schema van de DataSet alleen moet overeenkomen met de XML-elementen die u wilt weergeven in uw relationele weergave. Op deze manier kunt u een zeer groot XML-document en een zeer klein relationeel 'venster' in dat document hebben. Het XmlDataDocument behoudt het hele XML-document, ook al maakt de DataSet er slechts een klein deel van beschikbaar. (Zie voor een gedetailleerd voorbeeld hiervan Een DataSet synchroniseren met een XmlDataDocument.)

    In het volgende codevoorbeeld ziet u de stappen voor het maken van een DataSet en het bijbehorende schema invullen en deze vervolgens synchroniseren met een XmlDataDocument. Houd er rekening mee dat het DataSet-schema alleen moet overeenkomen met de elementen uit het XmlDataDocument dat u beschikbaar wilt maken met behulp van de DataSet.

    Dim dataSet As DataSet = New DataSet  
    
    ' Add code here to populate the DataSet with schema, but not data.  
    
    Dim xmlDoc As XmlDataDocument = New XmlDataDocument(dataSet)  
    xmlDoc.Load("XMLDocument.xml")  
    
    DataSet dataSet = new DataSet();  
    
    // Add code here to populate the DataSet with schema, but not data.  
    
    XmlDataDocument xmlDoc = new XmlDataDocument(dataSet);  
    xmlDoc.Load("XMLDocument.xml");  
    

    U kunt een XmlDataDocument niet laden als deze wordt gesynchroniseerd met een DataSet die gegevens bevat. Er wordt een uitzondering gegenereerd.

  • Maak een nieuw XmlDataDocument en laad deze vanuit een XML-document en open vervolgens de relationele weergave van de gegevens met behulp van de eigenschap DataSet van het XmlDataDocument. U moet het schema van de DataSet instellen voordat u een van de gegevens in het XmlDataDocument kunt bekijken met behulp van de DataSet. Ook hier moeten de tabelnamen en kolomnamen in uw DataSet-schema overeenkomen met de namen van de XML-elementen waarmee u ze wilt synchroniseren. Deze overeenkomst is hoofdlettergevoelig.

    In het volgende codevoorbeeld ziet u hoe u toegang krijgt tot de relationele weergave van de gegevens in een XmlDataDocument.

    Dim xmlDoc As XmlDataDocument = New XmlDataDocument  
    Dim dataSet As DataSet = xmlDoc.DataSet  
    
    ' Add code here to create the schema of the DataSet to view the data.  
    
    xmlDoc.Load("XMLDocument.xml")  
    
    XmlDataDocument xmlDoc = new XmlDataDocument();  
    DataSet dataSet = xmlDoc.DataSet;  
    
    // Add code here to create the schema of the DataSet to view the data.  
    
    xmlDoc.Load("XMLDocument.xml");  
    

Een ander voordeel van het synchroniseren van een XmlDataDocument met een DataSet is dat de kwaliteit van een XML-document behouden blijft. Als de DataSet wordt gevuld vanuit een XML-document met ReadXml, kan het aanzienlijk verschillen als de gegevens worden teruggeschreven als een XML-document met Behulp van WriteXml. Dit komt doordat de DataSet geen opmaak onderhoudt, zoals witruimte of hiërarchische informatie, zoals elementvolgorde, uit het XML-document. De DataSet bevat ook geen elementen uit het XML-document die zijn genegeerd omdat ze niet overeenkomen met het schema van de gegevensset. Als u een XmlDataDocument synchroniseert met een DataSet, kan de opmaak en hiërarchische elementstructuur van het oorspronkelijke XML-document worden onderhouden in xmlDataDocument, terwijl de DataSet alleen gegevens en schemagegevens bevat die geschikt zijn voor de DataSet.

Bij het synchroniseren van een DataSet met een XmlDataDocument kunnen de resultaten verschillen, afhankelijk van of uw DataRelation objecten zijn genest. Zie Nesting DataRelations voor meer informatie.

In dit gedeelte

Een dataset synchroniseren met een XmlDataDocument
Demonstreert het synchroniseren van een sterk getypte DataSet, met een minimaal schema, met een XmlDataDocument.

Een XPath-query uitvoeren op een DataSet
Demonstreert het uitvoeren van een XPath-query op de inhoud van een DataSet.

Een XSLT-transformatie toepassen op een dataset
Demonstreert het toepassen van een XSLT-transformatie op de inhoud van een DataSet.

XML gebruiken in een dataset
Hierin wordt beschreven hoe de DataSet communiceert met XML als gegevensbron, inclusief het laden en behouden van de inhoud van een DataSet als XML-gegevens.

DataRelations nesten
Beschrijft het belang van geneste DataRelation-objecten bij het weergeven van de inhoud van een DataSet als XML-gegevens en beschrijft hoe u deze relaties maakt.

DataSets, DataTables en DataViews
Beschrijft de DataSet en hoe u deze kunt gebruiken om toepassingsgegevens te beheren en om te communiceren met gegevensbronnen, waaronder relationele databases en XML.

XmlDataDocument
Bevat naslaginformatie over de klasse XmlDataDocument .

Zie ook