Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
This topic shows how to get the descendant elements with a specified name, and with an attribute with a specified value.
The XPath expression is:
.//Address[@Type='Shipping']
Example
This example finds all descendants elements with the name of Address, and with a Type attribute with a value of "Shipping".
This example uses the following XML document: Sample XML File: Multiple Purchase Orders (LINQ to XML).
XDocument po = XDocument.Load("PurchaseOrders.xml");
// LINQ to XML query
IEnumerable<XElement> list1 =
from el in po.Descendants("Address")
where (string)el.Attribute("Type") == "Shipping"
select el;
// XPath expression
IEnumerable<XElement> list2 = po.XPathSelectElements(".//Address[@Type='Shipping']");
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);
Dim po As XDocument = XDocument.Load("PurchaseOrders.xml")
' LINQ to XML query
Dim list1 As IEnumerable(Of XElement) = _
From el In po...<Address> _
Where el.@Type = "Shipping" _
Select el
' XPath expression
Dim list2 As IEnumerable(Of XElement) = _
po.XPathSelectElements(".//Address[@Type='Shipping']")
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 list1
Console.WriteLine(el)
Next
This example produces the following output:
Results are identical
<Address Type="Shipping">
<Name>Ellen Adams</Name>
<Street>123 Maple Street</Street>
<City>Mill Valley</City>
<State>CA</State>
<Zip>10999</Zip>
<Country>USA</Country>
</Address>
<Address Type="Shipping">
<Name>Cristian Osorio</Name>
<Street>456 Main Street</Street>
<City>Buffalo</City>
<State>NY</State>
<Zip>98112</Zip>
<Country>USA</Country>
</Address>
<Address Type="Shipping">
<Name>Jessica Arnold</Name>
<Street>4055 Madison Ave</Street>
<City>Seattle</City>
<State>WA</State>
<Zip>98112</Zip>
<Country>USA</Country>
</Address>