Достъп до XML и релационни данни
1. Преглед
Microsoft .NET Framework използва XML Document Object Model (DOM), за да осигури достъп до данни в XML документи и допълнителни класове за четене, писане и навигация в XML документ. Тези класове се поддържат от пространството от имена System.XML, което също комбинира XML DOM с механизма за достъп до данни ADO.NET. XMLDataDocument е един от подкласовете на DOM в указаното пространство от имена и осигурява достъп до релационни данни. XMLDataDocument преобразува XML в релационни данни в ADO.NET DataSet. Базираните на Microsoft .NET приложения могат да използват специални класове в пространството на имената System.XML за манипулиране и достъп до XML документи и релационни данни в DataDocument. Този механизъм поддържа n-слойна многослойна архитектура за събиране и разпространение на данни.
Инструментите Microsoft .NET XML и ADO.NET споделят общ програмен модел за достъп до XML данни (текст, разделен от тагове за структуриране на данни) и релационни данни (таблици, съставени от редове и колони). XML Framework чете XML данни от всеки поток от данни във възел на DOM дърво, стига данните да бъдат достъпни програмно, докато ADO.NET Framework обработва и осъществява достъп до релационни данни в рамките на DataSet. Има три ключови компонента за достъп до данни в XML Framework и ADO.NET:
- DataSet, който представлява релационен източник на данни в ADO.NET Framework.; - XMLDocument, който използва DOM в XML Framework. - XMLDataDocument, който съчетава ADO.NET и XML Framework и представлява релационни данни от DataSet, както и ги синхронизира с модела на XML документ.
XMLDataDocument е подклас на XMLDocument. Приложението .NET може да използваXMLDataDocument за зареждане на XML или релационни данни и управлението им с помощта на DOM. Когато XMLDataDocument зарежда релационни данни, данните се синхронизират между DataSet и DOM. След като XMLDataDocument зареди релационните данни, приложението може програмно да получи достъп до тях с помощта на API на .NET XML Framework. Класовете, които включват XML и ADO.NET Framework, позволяват три общи сценария:
Сценарий | Задачи |
Достъп до релационни данни с ADO.NET | - Създаване и използване на DataSet за достъп до релационни данни без използване на XML. - Четене и запис на XML данни към/от DataSet без използване на XmlDataDocument (Всяка XML информация, която не съответства на релационното представяне, ще бъде загубена.) |
Достъп до XML документи | - Създаване и използване на XmlDocument за достъп до XML потоци от данни. - Използване на структурирани данни в XmlDataDocument без таблици, редове, колони, релации или други релационни елементи. Това се прави по подобен начин на XmlDocument. |
Достъп до релационни данни в XML документи (XML и ADO.NET) | - Структурирани, релационни данни в XmlDataDocument заедно с DataSet. - Извличане на DataSet от XmlDataDocument, за релационен преглед и запитване към структурираното съдържание на XML документ. - Работа с XML представяне на релационни данни в DataSet. - Поддръжка за релационни и XML-базирани компоненти за приложения, обслужващи данни. Например, можете да редактирате и показвате релационни данни, без да засягате точността на XML документа, да прилагате XSLT (Разширяеми стилови таблици с езикови трансформации) към релационни данни. Изпълнение на XPath заявки върху релационни данни. |
1.1. XML.NET архитектура
Класовете XML.NET в пространството на имената System.XML са предназначени да осигурят оперативна съвместимост, както е показано на тази фигура:

Абстрактният клас XmlReader е предназначен само за осигуряване на бързо, некеширано подаване на поток за достъп до XML данни. Абстрактният клас XmlWriter осигурява бърз, некеширан, еднопосочен начин за създаване на XML потоци, съдържащи XML документи, които отговарят на спецификацията на W3C Extensible Markup Language (XML) 1.0 и пространството на имената от XML спецификацията. XmlTextWriter и XmlTextReader са директно изпълними класове в пространството на имената System.Xml. Класът XmlDocument предоставя инструменти за първото (http://www.w3.org/TR/DOM-Level-1/) и второто (http://www.w3.org/TR/DOM-Level-2/) нива на спецификацията на W3C XML Document Object Model (DOM). X mlNodeReader предоставя XmlReader API за клонове на DOM възела. Той връща всички възли, които намира в DOM дървото, включително възли, които препращат към обекти. XmlElement представлява елемент в DOM дървото. XmlAttribute представлява атрибут на обект XmlElement. Класът XmlTransform изпълнява WC3 трансформации по отношение на XSL спецификацията (XSLT) (http://www.w3.org/TR/XSLT), които ви позволяват да трансформирате един XML документ в друг. Той връща XmlWriter или XmlReader, за да позволи писане или четене на конвертирания XML документ. Класът XmlNavigator дефинира редактируем модел на курсора върху XML документ. Той осигурява вградена поддръжка за WC3 XML Path Language (XPath) изрази (http://www.w3.org/TR/XPath) и използва XslTransform. Абстрактният клас XmlResolver разрешава външни XML ресурси, наречени Uniform Resource Identifier (URI -Унифициран идентификатор на ресурс). XmlResolver се използва от XmlTextReader за зареждане на външни DTD обекти и схеми. Освен това се използва от XslTransform за обработка на . XmlUrlResolver е конкретна реализация на XmlResolver за URL адреси. Абстрактният клас XmlNameTable предоставя таблица с разделени низови обекти. Той осигурява ефикасно средство за XML анализатор, който позволява един и същ низов обект да се използва за повтарящи се имена на елементи и атрибути в XML документ. Едно приложение може да използва обекта XmlNameTable или собствената си реализация на класа XmlNameTable за ефективност.
1.2. Microsoft .NET XML класове
Следните класове на Microsoft .NET Framework предоставят поддръжка за Xml стандартите и предоставят мощен API за достъп до Xml документи. Осигурена е поддръжка за пространства от имена, типове данни, XSL схеми, XSL операции, запис на документи и навигация в документи.