Vorgehensweise: Suchen nach nebengeordneten Knoten (XPath-LINQ to XML) (C#)

Sie können nach allen nebengeordneten Knoten eines Knotens mit einem bestimmten Namen suchen. Die resultierende Auflistung kann den Kontextknoten enthalten, sofern der Kontextknoten ebenfalls diesen Namen besitzt.

Der XPath-Ausdruck lautet:

../Book

Beispiel

Dieses Beispiel sucht zuerst nach einem Book-Element und dann nach allen nebengeordneten Elementen mit dem Namen Book. Die resultierende Auflistung enthält den Kontextknoten.

In diesem Beispiel wird das folgende XML-Dokument verwendet: Beispiel-XML-Datei: Bücher (LINQ to XML).

XDocument books = XDocument.Load("Books.xml");  

XElement book =   
    books  
    .Root  
    .Elements("Book")  
    .Skip(1)  
    .First();  

// LINQ to XML query  
IEnumerable<XElement> list1 =  
    book  
    .Parent  
    .Elements("Book");  

// XPath expression  
IEnumerable<XElement> list2 = book.XPathSelectElements("../Book");  

if (list1.Count() == list2.Count() &&  
        list1.Intersect(list2).Count() == list1.Count())  
    Console.WriteLine("Results are identical");  
else  
    Console.WriteLine("Results differ");  
foreach (XElement el in list1)  
    Console.WriteLine(el);  

Dieses Beispiel erzeugt die folgende Ausgabe:

Results are identical  
<Book id="bk101">  
  <Author>Garghentini, Davide</Author>  
  <Title>XML Developer's Guide</Title>  
  <Genre>Computer</Genre>  
  <Price>44.95</Price>  
  <PublishDate>2000-10-01</PublishDate>  
  <Description>An in-depth look at creating applications   
      with XML.</Description>  
</Book>  
<Book id="bk102">  
  <Author>Garcia, Debra</Author>  
  <Title>Midnight Rain</Title>  
  <Genre>Fantasy</Genre>  
  <Price>5.95</Price>  
  <PublishDate>2000-12-16</PublishDate>  
  <Description>A former architect battles corporate zombies,   
      an evil sorceress, and her own childhood to become queen   
      of the world.</Description>  
</Book>  

Siehe auch

LINQ to XML für XPath-Benutzer (C#)