Hallo,
in einem XML-Dokument (siehe angehängte Datei) habe ich mehrere Datensätze, die mit dem Tag <product> gekennzeichnet sind. Jeder Datensatz hat wiederum viele verschiedene Unterelemente, die auch wiederum Unterelemente haben können. Soweit ist das ja nichts Besonderes.
Nun will ich in einer List von XPathNavigator-Objekte alle product-Navigatoren haben:
Zur Listenerstellung gibt's die Funktion GetSubNavigators():
Das fiese ist nun, dass nach jedem list.Add() alle(!) Listenelemente gleich dem zuletzt hinzugefügten Element sind. Diese Tatsache lässt mein Wissen über generische Listen in C# und die bisherigen Erfahrungen damit in's Wanken geraten.
Kann sich das jemand erklären?
Gruß, G
in einem XML-Dokument (siehe angehängte Datei) habe ich mehrere Datensätze, die mit dem Tag <product> gekennzeichnet sind. Jeder Datensatz hat wiederum viele verschiedene Unterelemente, die auch wiederum Unterelemente haben können. Soweit ist das ja nichts Besonderes.
Nun will ich in einer List von XPathNavigator-Objekte alle product-Navigatoren haben:
Code:
using System.Xml; using System.Xml.Schema; using System.Xml.XPath; using System.Collections.Generic; const string url = @"C:\dev\XmlTest\XmlTest.xml"; XmlDocument doc = new XmlDocument(); doc.Load(url); XPathNavigator topNavigator = doc.CreateNavigator(); List<XPathNavigator> productNavigators = GetSubNavigators(topNavigator, "ONIXmessage/product");
Code:
static List<XPathNavigator> GetSubNavigators(XPathNavigator baseNavigator, string elementName) { List<XPathNavigator> list = new List<XPathNavigator>(); XPathNodeIterator iterator = baseNavigator.Select(elementName); while (iterator.MoveNext()) { XPathNavigator nav = iterator.Current; list.Add(nav); } return list; }
Kann sich das jemand erklären?
Gruß, G