Práce s XML v C# (4.) - třídy XmlDocument a dotazy jazyka XPath v rubrice DOTNET
V dnešním dílu seriálu se naučíme pracovat s XML pomocí třídy XmlDocument a vyhledávat pomocí dotazů v jazyce XPath uzly splňující zadané podmínky.
Třída XmlDocument představuje dokument jako obrácený strom uzlů, kořenový element je na vrcholu. Ve srovnání s třídou XmlTextReader je paměťově velmi náročná, protože v paměti je po celou dobu celý strom uzlů. Každý uzel je instancí třídy XmlNode, definující metody a vlastnosti pro procházení stromy DOM, čtení a zápis obsahu uzlů, přidávání a odstraňování uzlů a další. Umožňuje modifikovat již existující XML dokumenty, ale ne vytvářet nové. Třída je odvozena od třídy XmlNode, doplňuje k ní vlastní metody a vlastnosti podporující nahrávání a ukládání dokumentů, vytváření nových uzlů a další operace. Podobně jako XmlTextReader zpracovává atributy uzlů způsobem odlišným od zpracování ostatních uzlů. Standardně ignoruje uzly s označením Whitespace (nevýznamné prázdné znaky mezi tagy), pokud je chceme zpracovávat, je nutno nastavit vlastnost PreserveWhitespace objektu XmlDocument na true ještě před voláním metody Load(). Pro vyhledání určitého uzlu není nutné procházet všechny uzly od začátku jako při použití třídy XmlTextReader, ale lze použít metody GetElementsByTagName(), SelectNodes() nebo SelectSingleNode().
Nejdůležitější metody a vlastnosti třídy XmlDocument:
DocumentElement – odkaz XmlNode na dokumentový element (počáteční bod navigace stromu DOM),
Load("název XML") – načtení XML,
GetElementsByTagName("název tagu") – vrátí kolekci uzlů daného názvu tagu,
GetElementById("id elementu") – vrátí element zadaného ID.
Nejdůležitější metody a vlastnosti třídy XmlNode:
NodeType – typ aktuálního uzlu (může být jedna z těchto hodnot: Atribute, CDATA, Comment, Document, DocumentFragment, DocumentType, Element, EndElement, EndEntity, Entity, EntityReference, None, Notation, ProcessingInstruction, SignificantWhitespace, Text, Whitespace, XmlDeclaration),
HasChildNodes – true, pokud aktuální uzel má nějaké poduzly (děti),
(c) Systém Jan Sova, Design David Krásenský a Jan Sova Se svými dotazy či problémy se obracejte na diskusní
fórum.
Časopis je součástí projektu Programator