XML-integratie met relationele gegevens en ADO.NET
De xmlDataDocument-klasse is een afgeleide klasse van het XmlDocument en bevat XML-gegevens. Het voordeel van xmlDataDocument is dat het een brug biedt tussen relationele en hiërarchische gegevens. Het is een XmlDocument dat kan worden gebonden aan een DataSet en beide klassen kunnen wijzigingen synchroniseren die zijn aangebracht in gegevens in de twee klassen. Met een XmlDocument dat is gebonden aan een DataSet , kan XML worden geïntegreerd met relationele gegevens en hoeft u uw gegevens niet weer te geven als XML of in een relationele indeling. U kunt beide doen en niet beperken tot één weergave van de gegevens.
De voordelen van het beschikbaar maken van gegevens in twee weergaven zijn:
Het gestructureerde gedeelte van een XML-document kan worden toegewezen aan een gegevensset en efficiënt worden opgeslagen, geïndexeerd en doorzocht.
Transformaties, validatie en navigatie kunnen efficiënt worden uitgevoerd via een cursormodel over de XML-gegevens die relationeel worden opgeslagen. Soms kan het efficiënter worden gedaan op basis van relationele structuren dan als de XML is opgeslagen in een XmlDocument-model .
De DataSet kan een deel van de XML opslaan. Dat wil gezegd, u kunt XPath of XslTransform gebruiken om alleen die elementen en kenmerken van belang op te slaan in een DataSet. Van daaruit kunnen wijzigingen worden aangebracht in de kleinere, gefilterde subset van gegevens, waarbij de wijzigingen worden doorgegeven aan de grotere gegevens in het XmlDataDocument.
U kunt ook een transformatie uitvoeren voor gegevens die vanuit SQL Server in de DataSet zijn geladen. Een andere optie is om met .NET Framework beheerde WinForm- en WebForm-besturingselementen te binden aan een gegevensset die is gevuld vanuit een XML-invoerstroom.
Naast het ondersteunen van XslTransform maakt een XmlDataDocument relationele gegevens beschikbaar voor XPath-query's en -validatie. In principe zijn alle XML-services beschikbaar voor relationele gegevens en relationele faciliteiten, zoals controlebinding, codegen, enzovoort, zijn beschikbaar via een gestructureerde projectie van XML zonder de XML-kwaliteit te in gevaar te brengen.
Omdat XmlDataDocument wordt overgenomen van een XmlDocument, biedt het een implementatie van de W3C DOM. Het feit waaraan het XmlDataDocument is gekoppeld en een subset van de gegevens hierin opslaat, beperkt of wijzigt het gebruik ervan niet als een XmlDocument op welke manier dan ook. Code die is geschreven om een XmlDocument te gebruiken, werkt ongewijzigd op basis van een XmlDataDocument. De DataSet biedt de relationele weergave van dezelfde gegevens door tabellen, kolommen, relaties en beperkingen te definiëren en is een zelfstandig, in-memory gebruikersgegevensarchief.
In de volgende afbeelding ziet u de verschillende koppelingen die XML-gegevens hebben met de DataSet en XmlDataDocument:
In de afbeelding ziet u dat XML-gegevens rechtstreeks in een DataSet kunnen worden geladen, waardoor directe manipulatie met XML op de relationele manier mogelijk is. Of de XML kan worden geladen in een afgeleide klasse van de DOM, het XmlDataDocument, en vervolgens wordt geladen en gesynchroniseerd met de DataSet. Omdat de DataSet en XmlDataDocument worden gesynchroniseerd via één set gegevens, worden wijzigingen in de gegevens in het ene archief doorgevoerd in het andere archief.
Het XmlDataDocument neemt alle bewerkings- en navigatiefuncties over van het XmlDocument. Er zijn situaties waarin het gebruik van xmlDataDocument en de overgenomen functies, gesynchroniseerd met een DataSet, een geschiktere optie is dan het rechtstreeks laden van XML in de DataSet. De volgende tabel bevat de items die moeten worden overwogen bij het kiezen van de methode die moet worden gebruikt om de DataSet te laden.
Wanneer xml rechtstreeks in een dataset moet worden geladen | Wanneer een XmlDataDocument met een DataSet moet worden gesynchroniseerd |
---|---|
Query's van gegevens in de DataSet maken eenvoudiger gebruik van SQL dan XPath. | XPath-query's zijn nodig voor gegevens in de DataSet. |
Het behoud van de volgorde van elementen in de bron-XML is niet essentieel. | Het behoud van de volgorde van elementen in de bron-XML is essentieel. |
Witruimte tussen elementen en opmaak hoeft niet te worden bewaard in de bron-XML. | Witruimte en opmaakbehoud in de bron-XML is essentieel. |
Als u XML rechtstreeks in en uit een DataSet laadt en schrijft, raadpleegt u Het laden van een DataSet uit XML en het schrijven van een DataSet als XML-gegevens.
Als het laden van de DataSet vanuit een XmlDataDocument aan uw behoeften voldoet, raadpleegt u Het synchroniseren van een gegevensset met een XML-document.