Dela via


XML-integrering med relationsdata och ADO.NET

Klassen XmlDataDocument är en härledd klass i XmlDocument och innehåller XML-data. Fördelen med XmlDataDocument är att den ger en brygga mellan relations- och hierarkiska data. Det är en XmlDocument som kan bindas till en DataSet och båda klasserna kan synkronisera ändringar som gjorts i data som finns i de två klasserna. En XmlDocument som är bunden till en DataSet gör att XML kan integreras med relationsdata, och du behöver inte ha dina data representerade som antingen XML eller i relationsformat. Du kan göra båda och inte begränsas till en enda representation av data.

Fördelarna med att ha data tillgängliga i två vyer är:

  • Den strukturerade delen av ett XML-dokument kan mappas till en datamängd och lagras, indexeras och sökas effektivt.

  • Transformeringar, validering och navigering kan göras effektivt via en markörmodell över XML-data som lagras relationsmässigt. Ibland kan det göras mer effektivt mot relationsstrukturer än om XML lagras i en XmlDocument-modell .

  • DataSet kan lagra en del av XML-koden. Du kan alltså använda XPath eller XslTransform för att lagra endast de element och attribut som är intressanta för en DataSet . Därifrån kan ändringar göras i den mindre, filtrerade delmängden av data, med ändringarna som sprids till större data i XmlDataDocument.

Du kan också köra en transformering över data som lästes in i DataSet från SQL Server. Ett annat alternativ är att binda .NET Framework-klasshanterade WinForm- och WebForm-kontroller till en DataSet som fylldes i från en XML-indataström.

Förutom stöd för XslTransform exponerar en XmlDataDocument relationsdata för XPath-frågor och validering. I grund och botten är alla XML-tjänster tillgängliga över relationsdata, och relationsresurser, till exempel kontrollbindning, codegen och så vidare, är tillgängliga via en strukturerad projektion av XML utan att äventyra XML-återgivningen.

Eftersom XmlDataDocument ärvs från en XmlDocument tillhandahåller den en implementering av W3C DOM. Det faktum att XmlDataDocument är associerat med och lagrar en delmängd av sina data inom, begränsar eller ändrar inte datauppsättningensanvändning som xml-dokumentpå något sätt. Kod som skrivs för att använda en XmlDocument fungerar oförändrad mot en XmlDataDocument. DataSet tillhandahåller relationsvyn för samma data genom att definiera tabeller, kolumner, relationer och begränsningar och är ett fristående användardatalager i minnet.

Följande bild visar de olika associationer som XML-data har med DataSet och XmlDataDocument:

Diagram that shows different associations with the XML DataSet.

Bilden visar att XML-data kan läsas in direkt i en DataSet, vilket möjliggör direkt manipulering med XML på relationellt sätt. Eller så kan XML läsas in i en härledd klass av DOM, som är XmlDataDocument, och därefter läsas in och synkroniseras med DataSet. Eftersom DataSet och XmlDataDocument synkroniseras över en enda uppsättning data återspeglas ändringar som görs i data i ett arkiv i det andra arkivet.

XmlDataDocument ärver alla redigerings- och navigeringsfunktioner från XmlDocument. Det finns tillfällen när du använder XmlDataDocument och dess ärvda funktioner, synkroniserade med en DataSet, är ett lämpligare alternativ än att läsa in XML direkt i DataSet. I följande tabell visas de objekt som ska beaktas när du väljer vilken metod som ska användas för att läsa in DataSet.

När du ska läsa in XML direkt i en DataSet När du ska synkronisera en XmlDataDocument med en DataSet
Frågor om data i DataSet är enklare att använda SQL än XPath. XPath-frågor behövs för data i DataSet.
Bevarandet av elementordningen i käll-XML är inte kritiskt. Bevarandet av elementordningen i käll-XML är kritiskt.
Tomt utrymme mellan element och formatering behöver inte bevaras i käll-XML:en. Det är viktigt att bevara tomt utrymme och formatering i käll-XML:et.

Om du läser in och skriver XML direkt till och från en DataSet till dina behov kan du läsa in en datauppsättning från XML och skriva en datauppsättning som XML-data.

Om inläsningen av DataSet från en XmlDataDocument uppfyller dina behov kan du läsa Synkronisera en datauppsättning med ett XML-dokument.

Se även