Announcement

Collapse
No announcement yet.

[XML] List<XPathNavigator> funktioniert nicht

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • [XML] List<XPathNavigator> funktioniert nicht

    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:
    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");
    Zur Listenerstellung gibt's die Funktion GetSubNavigators():
    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;
    }
    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
    Attached Files
Working...
X