This article has been localized into Dutch by the community.
Werken met de XmlNode class
In het vorige hoofdstuk gebruikten we de XmlDocument class om een XML bestand te parsen. Er werd een nieuwe class geïntroduceerd in het voorbeeld, wat zeer essentieel is bij het parsen van XML met XmlDocument: De XmlNode class. De XML wordt in een XmlNode geparst (die het root element is) en daarna kun je de child elements benaderen met de ChildNodes property. De XmlNode class geeft je echter ook nog een boel andere informatie. Bijvoorbeeld de naam van de 'tag', de 'attributes', de binnenste tekst en de XML zelf. Dit hoofdstuk geeft een korte beschrijving van een paar van de meer interessante aspecten van de XmlNode class. het is belangrijk om hiervan te weten omdat de XmlNode class een echt key concept is bij het parsen van XML met de XmlDocument class. In de volgende voorbeelden zullen we veel gebruik maken van het DocumentElement. En terwijl dit in feite een XmlElement type is, is het toch zo dat XmlDocument van XmlNode inherit (erft), en is dus in essentie hetzelfde.
De Name property geeft de naam van de node. Het volgende voorbeeld heeft als output de tekst "user":
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml("<user name=\"John Doe\">A user node</user>");
Console.WriteLine(xmlDoc.DocumentElement.Name);
Console.ReadKey();
De InnerText property houdt de tekst vast tussen de begin en de eind tag, zoals hier:
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml("<test>InnerText is here</test>");
Console.WriteLine(xmlDoc.DocumentElement.InnerText);
Console.ReadKey();
De InnerXml property is een beetje als de InnerText property, maar waar de InnerText elke aanwezige XML weg stript, doet de InnerXml dat duidelijk niet. Het volgende voorbeeld illustreert het verschil:
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml("<users><user>InnerText/InnerXml is here</user></users>");
Console.WriteLine("InnerXml: " + xmlDoc.DocumentElement.InnerXml);
Console.WriteLine("InnerText: " + xmlDoc.DocumentElement.InnerText);
Console.ReadKey();
De OuterXml property is hetzelfde als de InnerXml, maar sluit de XML van de node zelf in. Het volgende voorbeeld illustreert het verschil.
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml("<users><user>InnerText/InnerXml is here</user></users>");
Console.WriteLine("InnerXml: " + xmlDoc.DocumentElement.InnerXml);
Console.WriteLine("OuterXml: " + xmlDoc.DocumentElement.OuterXml);
Console.ReadKey();
We werkten in het vorige hoofdstuk met 'attributes', maar hier is nog een voorbeeld:
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml("<user name=\"John Doe\" age=\"42\"></user>");
if(xmlDoc.DocumentElement.Attributes["name"] != null)
Console.WriteLine(xmlDoc.DocumentElement.Attributes["name"].Value);
if(xmlDoc.DocumentElement.Attributes["age"] != null)
Console.WriteLine(xmlDoc.DocumentElement.Attributes["age"].Value);
Console.ReadKey();