2006/11/29

XML in .NET 2.0 (part II)

So nun will ich als Nachtrag noch eine weitere Lösung zu dem in http://alexkuechler.blogspot.com/xml_in_dotnetzweinull geschilderten Problem geben. Diese Lösung soll diesmal auf dem Document Object Model beruhen.
Folgende Lösung zu 1.)
// Create XMLDocument with xml file
XmlDocument document = new XmlDocument();
document.Load(@"myXmlFile.xml");

XmlNodeList nlType = document.GetElementsByTagName("type");
return nlType.Count;

Kurzum:
  1. Dokument laden
  2. Alle Knoten mit einem bestimmten namen ("type") in die Liste laden und
  3. Die Anzahl der Elemente in der Sammlung zählen
Folgende Lösung zu 2.)
// Select all nodes 'Type'
XmlNodeList nodeList = document.GetElementsByTagName("type");
foreach (XmlNode n in nodeList)
{
currentCounter = 0;
// Create NodeList with all nodes in Mebers whose text for the MemberType is Method
// In plain text: n.SelectNodes(".//MemberType[.='Method']")
XmlNodeList childNodeList = n.SelectNodes(".//" + "memberType" + "[.='" + "Method" + "']");
// Simply count the arraysize
currentCounter = childNodeList.Count;
// Read attribute Name of the Type with '@'
currentClassName = n.SelectSingleNode("./@name").Value.ToString();
// If currentCounter greater than highestCounter ...
if (currentCounter > highestCounter)
{
// ... set variables to save the classname and counter
highestCounter = currentCounter;
highestClassName = currentClassName;
}
}

Kurzum:
  1. Auf allen "type"-Elementen iterieren
  2. Die Elemente "memberTye" deren Text "Method" lautet auswählen
  3. Auf der Liste die Elemenete zählen
  4. Namen der übergeordneten Klasse ("type") aus dem Attribut "name" auswählen
  5. Werte auf neue Höchstzahl vergleichen und ggf. als neues Maximum speichern
Also insgesamt auch nicht schwer.
Wer Interesse an den Materialien meienr Vorlesung hat, kann gerne mal auf http://www.dcl.hpi.uni-potsdam.de/teaching/xml06/ nachsehen.

Keine Kommentare: