How to: Query LINQ to XML Using XPath
This topic introduces the extension methods that enable you to query an XML tree by using XPath. For detailed information about using these extension methods, see System.Xml.XPath.Extensions.
Unless you have a very specific reason for querying using XPath, such as extensive use of legacy code, using XPath with LINQ to XML is not recommended. XPath queries will not perform as well as LINQ to XML queries.
Example
The following example creates a small XML tree and uses XPathSelectElements to select a set of elements.
XElement root = new XElement("Root",
new XElement("Child1", 1),
new XElement("Child1", 2),
new XElement("Child1", 3),
new XElement("Child2", 4),
new XElement("Child2", 5),
new XElement("Child2", 6)
);
IEnumerable<XElement> list = root.XPathSelectElements("./Child2");
foreach (XElement el in list)
Console.WriteLine(el);
Dim root As XElement = _
<Root>
<Child1>1</Child1>
<Child1>2</Child1>
<Child1>3</Child1>
<Child2>4</Child2>
<Child2>5</Child2>
<Child2>6</Child2>
</Root>
Dim list As IEnumerable(Of XElement) = root.XPathSelectElements("./Child2")
For Each el As XElement In list
Console.WriteLine(el)
Next
This example produces the following output:
<Child2>4</Child2>
<Child2>5</Child2>
<Child2>6</Child2>