Wir haben eine XML-Datei mit einer sehr einfachen Implementierung von XLink implementieren:Wie eine einfache XPath-Lookup
<root xmlns:xlink="http://www.w3.org/1999/xlink">
<firstChild id="ID1" />
...
<ref xlink:href="#ID1" />
</root>
Nehmen wir an, die XLink Implementierung als dass jede komplizierter wird es nicht. Der wichtige Punkt ist jedoch, dass das Element, auf das verwiesen wird (in diesem Fall firstChild), irgendwo im Dokument an beliebiger Stelle in der Hierarchie angezeigt werden kann.
In einem XPath-Nachschlag Sie das Element auf die sich die < ref> Knoten unter Verwendung eines Ausdrucks wie finden konnte:
//*[@id='ID1']
Was ist der beste gleichwertig mit LINQ to XML? Ich hätte etwas in diese Richtung gedacht:
XDocument doc = XDocument.Load("file.xml");
var dest = xDoc.Descendants().Where(e => (string)e.Attribute("id") == "ID1").SingleOrDefault();
Ich habe es tatsächlich noch nicht getestet. Aber im Allgemeinen, wenn das XML-Dokument ziemlich groß ist, wird der LINQ Weg ineffizient sein (da es eine Enumeration aller Nachkommen auf dem XDocument verwendet)? Wäre es besser, zu einem XPathNavigator zurückzukehren und nur den XPath-Ausdruck zu verwenden?
Wenn so etwas in LINQ zu tun ist, gibt es eine bessere Methode als das, was ich geschrieben habe? LINQ ist für mich noch ein paar Tage alt ... Es ist großartig, aber ich frage mich, ob es bei bestimmten Operationen Effizienzeinschränkungen gibt.
Genau das, was ich gesucht :) –