Delen via


XML Document Object Model (DOM)

De klasse XML Document Object Model (DOM) is een in-memory weergave van een XML-document. Met dom kunt u programmatisch een XML-document lezen, bewerken en wijzigen. De XmlReader-klasse leest ook XML. De klasse biedt echter niet-in de cache opgeslagen, alleen-lezentoegang. Dit betekent dat er geen mogelijkheden zijn om de waarden van een kenmerk of inhoud van een element te bewerken, of de mogelijkheid om knooppunten in te voegen en te verwijderen met xmlReader. Bewerken is de primaire functie van de DOM. Het is de gebruikelijke en gestructureerde manier waarop XML-gegevens worden weergegeven in het geheugen, hoewel de werkelijke XML-gegevens op lineaire wijze worden opgeslagen wanneer ze zich in een bestand bevinden of afkomstig zijn van een ander object. Hier volgen XML-gegevens.

Invoer

<?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>

In de volgende afbeelding ziet u hoe geheugen is gestructureerd wanneer deze XML-gegevens worden ingelezen in de DOM-structuur.

XML document structure XML-documentstructuur

In de XML-documentstructuur vertegenwoordigt elke cirkel in deze afbeelding een knooppunt, dat een XmlNode-object wordt genoemd. Het XmlNode-object is het basisobject in de DOM-structuur. De XmlDocument-klasse, die XmlNode uitbreidt, ondersteunt methoden voor het uitvoeren van bewerkingen in het document als geheel (bijvoorbeeld het laden ervan in het geheugen of het opslaan van de XML in een bestand. Daarnaast biedt XmlDocument een middel om de knooppunten in het hele XML-document weer te geven en te bewerken. Zowel XmlNode als XmlDocument hebben prestatie- en bruikbaarheidsverbeteringen en hebben methoden en eigenschappen voor:

  • Knooppunten openen en wijzigen die specifiek zijn voor de DOM, zoals elementknooppunten, entiteitsreferentieknooppunten, enzovoort.

  • Haal volledige knooppunten op, naast de informatie die het knooppunt bevat, zoals de tekst in een elementknooppunt.

    Notitie

    Als voor een toepassing geen structuur- of bewerkingsmogelijkheden van de DOM zijn vereist, bieden de klassen XmlReader en XmlWriter niet-in de cache opgeslagen streamtoegang tot XML. Zie voor meer informatie XmlReader en XmlWriter.

Knooppuntobjecten hebben een set methoden en eigenschappen, evenals eenvoudige en goed gedefinieerde kenmerken. Enkele van deze kenmerken zijn:

  • Knooppunten hebben één bovenliggend knooppunt, een bovenliggend knooppunt dat direct erboven een knooppunt is. De enige knooppunten die geen bovenliggend element hebben, is de hoofdmap van het document, omdat het het knooppunt op het hoogste niveau is en het document zelf en documentfragmenten bevat.

  • De meeste knooppunten kunnen meerdere onderliggende knooppunten hebben. Dit zijn knooppunten direct eronder. Hier volgt een lijst met knooppunttypen die onderliggende knooppunten kunnen bevatten.

    • Document

    • DocumentFragment

    • EntityReference

    • Element

    • Kenmerk

    De knooppunten XmlDeclaration, Notation, Entity, CDATASection, Text, Comment, ProcessingInstruction en DocumentType hebben geen onderliggende knooppunten.

  • Knooppunten die zich op hetzelfde niveau bevinden, die worden weergegeven in het diagram door de knooppunten boek en pubinfo, zijn broers en zussen.

Een kenmerk van de DOM is hoe deze kenmerken verwerkt. Kenmerken zijn geen knooppunten die deel uitmaken van de bovenliggende, onderliggende en onderliggende relaties. Kenmerken worden beschouwd als een eigenschap van het elementknooppunt en bestaan uit een naam en een waardepaar. Als u bijvoorbeeld XML-gegevens hebt die bestaan uit format="dollar" gekoppeld aan het element price, is het woord format de naam en de waarde van het format kenmerk dollar. Als u het format="dollar" kenmerk van het prijsknooppunt wilt ophalen, roept u de Methode GetAttribute aan wanneer de cursor zich op het price elementknooppunt bevindt. Zie Toegang tot kenmerken in de DOM voor meer informatie.

Wanneer XML in het geheugen wordt gelezen, worden knooppunten gemaakt. Niet alle knooppunten zijn echter hetzelfde type. Een element in XML heeft verschillende regels en syntaxis dan een verwerkingsinstructie. Omdat verschillende gegevens worden gelezen, wordt er daarom een knooppunttype toegewezen aan elk knooppunt. Dit knooppunttype bepaalt de kenmerken en functionaliteit van het knooppunt.

Zie Typen XML-knooppunten voor meer informatie over de typen knooppunten die in het geheugen worden gegenereerd. Zie De objecthiërarchie toewijzen aan XML-gegevens voor meer informatie over de objecten die in de knooppuntstructuur zijn gemaakt.

Microsoft heeft de API's uitgebreid die beschikbaar zijn in het World Wide Web Consortium (W3C) DOM Level 1 en Level 2 om het gemakkelijker te maken om met een XML-document te werken. Hoewel de W3C-standaarden volledig worden ondersteund, voegen de extra klassen, methoden en eigenschappen functionaliteit toe buiten wat kan worden gedaan met behulp van de W3C XML DOM. Met nieuwe klassen hebt u toegang tot relationele gegevens, zodat u methoden krijgt voor het synchroniseren met ADO.NET gegevens, waarbij gegevens tegelijkertijd als XML worden weergegeven. Zie Een gegevensset synchroniseren met een XmlDataDocument voor meer informatie.

De DOM is het handigst voor het lezen van XML-gegevens in het geheugen om de structuur te wijzigen, knooppunten toe te voegen of te verwijderen, of om de gegevens te wijzigen die door een knooppunt zijn opgeslagen, zoals in de tekst van een element. Er zijn echter andere klassen beschikbaar die sneller zijn dan de DOM in andere scenario's. Gebruik xmlReader en XmlWriter voor snelle, niet-in de cache opgeslagen stroomtoegang tot XML. Als u willekeurige toegang nodig hebt met een cursormodel en XPath, gebruikt u de klasse XPathNavigator .

Zie ook