Model DOM (XML Document Object Model)

Klasa XML Document Object Model (DOM) jest reprezentacją dokumentu XML w pamięci. Dom umożliwia programowe odczytywanie, manipulowanie i modyfikowanie dokumentu XML. Klasa XmlReader odczytuje również kod XML, jednak zapewnia dostęp tylko do odczytu i niebuforowany. Oznacza to, że nie ma możliwości edytowania wartości atrybutu lub zawartości elementu albo możliwości wstawiania i usuwania węzłów z elementem XmlReader. Edytowanie jest podstawową funkcją modelu DOM. Jest to typowy i ustrukturyzowany sposób, w jaki dane XML są reprezentowane w pamięci, chociaż rzeczywiste dane XML są przechowywane w sposób liniowy, gdy znajdują się w pliku lub pochodzące z innego obiektu. Poniżej przedstawiono dane XML.

Dane wejściowe

<?xml version="1.0"?>
  <books>
    <book>
        <author>Carson</author>
        <price format="dollar">31.95</price>
        <pubdate>05/01/2001</pubdate>
    </book>
    <pubinfo>
        <publisher>MSPress</publisher>
        <state>WA</state>
    </pubinfo>
  </books>

Na poniższej ilustracji pokazano, jak pamięć jest ustrukturyzowana, gdy te dane XML są odczytywane do struktury DOM.

XML document structure Struktura dokumentu XML

W strukturze dokumentu XML każdy okrąg na tej ilustracji reprezentuje węzeł, który jest nazywany obiektem XmlNode . Obiekt XmlNode jest obiektem podstawowym w drzewie DOM. Klasa XmlDocument, która rozszerza xmlNode, obsługuje metody wykonywania operacji na dokumencie jako całości (na przykład załadowanie go do pamięci lub zapisanie kodu XML w pliku. Ponadto funkcja XmlDocument umożliwia wyświetlanie węzłów w całym dokumencie XML i manipulowanie nimi. Zarówno XmlNode , jak i XmlDocument mają ulepszenia wydajności i użyteczności oraz mają metody i właściwości:

  • Uzyskaj dostęp do węzłów i zmodyfikuj węzły specyficzne dla modelu DOM, takie jak węzły elementów, węzły odwołania do jednostek itd.

  • Pobierz całe węzły oprócz informacji zawartych w węźle węzła, takich jak tekst w węźle elementu.

    Uwaga

    Jeśli aplikacja nie wymaga struktury ani możliwości edytowania udostępnianych przez dom, klasy XmlReader i XmlWriter zapewniają niebuforowany, tylko do przekazywania strumienia dostęp do kodu XML. Aby uzyskać więcej informacji, zobacz tematy XmlReader oraz XmlWriter.

Obiekty węzłów mają zestaw metod i właściwości, a także podstawowe i dobrze zdefiniowane cechy. Niektóre z tych cech to:

  • Węzły mają jeden węzeł nadrzędny, węzeł nadrzędny będący węzłem bezpośrednio nad nimi. Jedynymi węzłami, które nie mają elementu nadrzędnego, jest katalog główny dokumentu, ponieważ jest to węzeł najwyższego poziomu i zawiera sam dokument i fragmenty dokumentu.

  • Większość węzłów może mieć wiele węzłów podrzędnych, które są węzłami bezpośrednio poniżej nich. Poniżej znajduje się lista typów węzłów, które mogą mieć węzły podrzędne.

    • Document

    • Documentfragment

    • Entityreference

    • Element

    • Atrybut

    Węzły XmlDeclaration, Notation, Entity, CDATASection, Text, Comment, ProcessingInstruction i DocumentType nie mają węzłów podrzędnych.

  • Węzły, które znajdują się na tym samym poziomie, reprezentowane na diagramie przez węzły książki i pubinfo , są elementami równorzędnymi.

Jedną z cech modelu DOM jest sposób obsługi atrybutów. Atrybuty nie są węzłami, które są częścią relacji nadrzędnych, podrzędnych i równorzędnych. Atrybuty są uważane za właściwość węzła elementu i składają się z nazwy i pary wartości. Jeśli na przykład masz dane XML składające się z format="dollarelementu " skojarzone z elementem price, wyraz format to nazwa, a wartość atrybutu format to dollar. Aby pobrać format="dollar" atrybut węzła price , należy wywołać metodę GetAttribute , gdy kursor znajduje się w węźle price elementu. Aby uzyskać więcej informacji, zobacz Uzyskiwanie dostępu do atrybutów w modelu DOM.

W miarę odczytywania kodu XML do pamięci węzły są tworzone. Jednak nie wszystkie węzły są tego samego typu. Element w formacie XML ma inne reguły i składnię niż instrukcja przetwarzania. W związku z tym w miarę odczytywania różnych danych typ węzła jest przypisywany do każdego węzła. Ten typ węzła określa charakterystykę i funkcjonalność węzła.

Aby uzyskać więcej informacji na temat typów węzłów generowanych w pamięci, zobacz Typy węzłów XML. Aby uzyskać więcej informacji na temat obiektów utworzonych w drzewie węzłów, zobacz Mapowanie hierarchii obiektów na dane XML.

Firma Microsoft rozszerzyła interfejsy API, które są dostępne w world Wide Web Consortium (W3C) DOM Level 1 i Level 2, aby ułatwić pracę z dokumentem XML. Chociaż w pełni obsługują standardy W3C, dodatkowe klasy, metody i właściwości dodają funkcjonalność poza tym, co można zrobić przy użyciu modelu DOM XML W3C. Nowe klasy umożliwiają uzyskiwanie dostępu do danych relacyjnych, zapewniając metody synchronizowania z danymi ADO.NET, jednocześnie uwidaczniając dane jako XML. Aby uzyskać więcej informacji, zobacz Synchronizowanie zestawu danych za pomocą elementu XmlDataDocument.

Dom jest najbardziej przydatny do odczytywania danych XML do pamięci, aby zmienić jego strukturę, dodać lub usunąć węzły lub zmodyfikować dane przechowywane przez węzeł, tak jak w tekście zawartym przez element. Jednak inne klasy są dostępne szybciej niż DOM w innych scenariuszach. W celu szybkiego, niebuforowanego, tylko do przekazywania strumieniowego dostępu do kodu XML należy użyć elementów XmlReader i XmlWriter. Jeśli potrzebujesz dostępu losowego z modelem kursora i narzędziem XPath, użyj klasy XPathNavigator.

Zobacz też