Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
This topic compares the XPath preceding-sibling axis to the LINQ to XML child XNode.ElementsBeforeSelf axis.
The XPath expression is:
preceding-sibling::*
Note that the results of both XPathSelectElements and XNode.ElementsBeforeSelf are in document order.
Example
The following example finds the FullAddress element, and then retrieves the previous elements using the preceding-sibling axis.
This example uses the following XML document: Sample XML File: Customers and Orders (LINQ to XML).
XElement co = XElement.Load("CustomersOrders.xml");
XElement add = co.Element("Customers").Element("Customer").Element("FullAddress");
// LINQ to XML query
IEnumerable<XElement> list1 = add.ElementsBeforeSelf();
// XPath expression
IEnumerable<XElement> list2 = add.XPathSelectElements("preceding-sibling::*");
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 list2)
Console.WriteLine(el);
Dim co As XElement = XElement.Load("CustomersOrders.xml")
Dim add As XElement = co.<Customers>.<Customer>. _
<FullAddress>.FirstOrDefault
' LINQ to XML query
Dim list1 As IEnumerable(Of XElement) = add.ElementsBeforeSelf()
' XPath expression
Dim list2 As IEnumerable(Of XElement) = add.XPathSelectElements("preceding-sibling::*")
If list1.Count() = list2.Count() And _
list1.Intersect(list2).Count() = list1.Count() Then
Console.WriteLine("Results are identical")
Else
Console.WriteLine("Results differ")
End If
For Each el As XElement In list2
Console.WriteLine(el)
Next
This example produces the following output:
Results are identical
<CompanyName>Great Lakes Food Market</CompanyName>
<ContactName>Howard Snyder</ContactName>
<ContactTitle>Marketing Manager</ContactTitle>
<Phone>(503) 555-7555</Phone>