Model DOM (Document Object Model) dokumentu XML
Třída MODELU DOM (Document Object Model) XML je reprezentace dokumentu XML v paměti. DoM umožňuje programově číst, manipulovat a upravovat dokument XML. XmlReader třída také čte XML, ale poskytuje přístup jen pro čtení, který není uložen v mezipaměti, jen pro čtení. To znamená, že neexistují žádné možnosti pro úpravu hodnot atributu nebo obsahu elementu nebo schopnost vložit a odebrat uzly pomocí XmlReader. Úpravy jsou primární funkcí DOM. Jedná se o běžný a strukturovaný způsob, jakým jsou data XML reprezentována v paměti, i když skutečná data XML jsou uložena lineárním způsobem, když jsou v souboru nebo pocházejí z jiného objektu. Následuje data XML.
Vstup
<?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>
Následující obrázek ukazuje, jak je paměť strukturovaná, když se tato data XML čtou do struktury DOM.
Struktura dokumentu XML
V rámci struktury dokumentu XML představuje každý kruh v tomto obrázku uzel, který se nazývá XmlNode objekt. XmlNode objekt je základní objekt ve stromu DOM. XmlDocument třída, která rozšiřuje XmlNode, podporuje metody pro provádění operací s dokument jako celek (například načtení do paměti nebo uložení XML do souboru. XmlDocument navíc poskytuje způsob zobrazení a manipulace s uzly v celém dokumentu XML. XmlNode i XmlDocument mají vylepšení výkonu a použitelnosti a mají metody a vlastnosti pro:
Přístup k uzlům, které jsou specifické pro objekt DOM, jako jsou uzly prvků, referenční uzly entity atd.
Načtěte celé uzly, kromě informací, které uzel obsahuje, například text v uzlu elementu.
Objekty uzlu mají sadu metod a vlastností, stejně jako základní a dobře definované charakteristiky. Mezi tyto vlastnosti patří:
Uzly mají jeden nadřazený uzel, nadřazený uzel je uzel přímo nad nimi. Jedinými uzly, které nemají nadřazený objekt, je kořen dokumentu, protože se jedná o uzel nejvyšší úrovně a obsahuje samotný dokument a fragmenty dokumentů.
Většina uzlů může mít více podřízených uzlů, což jsou uzly přímo pod nimi. Následuje seznam typů uzlů, které mohou mít podřízené uzly.
Dokument
Documentfragment
Entityreference
Element
Atribut
Uzly XmlDeclaration, Notation, Entity, CDATASection, Text, Comment, ProcessingInstruction a DocumentType nemají podřízené uzly.
Uzly, které jsou na stejné úrovni reprezentované v diagramu uzly knihy a pubinfo , jsou na stejné úrovni.
Jednou z charakteristik dom je způsob, jakým zpracovává atributy. Atributy nejsou uzly, které jsou součástí nadřazených, podřízených vztahů a vztahů na stejné úrovni. Atributy jsou považovány za vlastnost uzlu elementu a jsou tvořeny názvem a párem hodnot. Pokud máte například data XML, která se skládají z format="dollar
" přidruženého k prvku price
, slovo format
je název a hodnota atributu format
je dollar
. Chcete-li načíst format="dollar"
atribut uzlu ceny , volání GetAttribute metoda, když kurzor je umístěn v price
uzlu prvku. Další informace naleznete v tématu Přístup k atributům v systému DOM.
Vzhledem k tomu, že se XML čte do paměti, vytvoří se uzly. Ne všechny uzly jsou ale stejného typu. Element v jazyce XML má jiná pravidla a syntaxi než instrukce pro zpracování. Vzhledem k tomu, že se čtou různá data, je k jednotlivým uzlům přiřazen typ uzlu. Tento typ uzlu určuje vlastnosti a funkce uzlu.
Další informace o typech uzlů generovaných v paměti naleznete v tématu Typy uzlů XML. Další informace o objektech vytvořených ve stromu uzlu naleznete v tématu Mapování hierarchie objektů na data XML.
Společnost Microsoft rozšířila rozhraní API, která jsou k dispozici v konsorciu W3C (World Wide Web Consortium) DOM Level 1 a Level 2, aby se usnadnila práce s dokumentem XML. Zatímco plně podporuje standardy W3C, další třídy, metody a vlastnosti přidávají funkce nad rámec toho, co lze provést pomocí W3C XML DOM. Nové třídy umožňují přístup k relačním datům a umožňují vám metody pro synchronizaci s ADO.NET daty, které současně zveřejňují data jako XML. Další informace naleznete v tématu Synchronizace datové sady s XmlDataDocument.
DoM je nejužitečnější pro čtení dat XML do paměti, aby se změnila jeho struktura, přidání nebo odebrání uzlů nebo úprava dat uložených uzlem jako v textu obsaženém elementem. V jiných scénářích jsou ale k dispozici i jiné třídy, které jsou rychlejší než dom. Pro rychlý, non-cached, forward-only stream přístup k XML, použijte XmlReader a XmlWriter. Pokud potřebujete náhodný přístup s kurzorovým modelem a XPathem, použijte třídu XPathNavigator .