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 article shows how to use XPathEvaluate to find an attribute of a parent element, and how to use LINQ to XML query to do the same thing.
Example: Find the Author
element, and then find the id
attribute of its parent
This example first finds an Author
element in XML document Sample XML file: Books, and then finds the id
attribute of its parent element.
The XPath expression is ../@id
.
XDocument books = XDocument.Load("Books.xml");
XElement author =
books
.Root
.Element("Book")
.Element("Author");
// LINQ to XML query
XAttribute att1 =
author
.Parent
.Attribute("id");
// XPath expression
XAttribute att2 = ((IEnumerable)author.XPathEvaluate("../@id")).Cast<XAttribute>().First();
if (att1 == att2)
Console.WriteLine("Results are identical");
else
Console.WriteLine("Results differ");
Console.WriteLine(att1);
Dim books As XDocument = XDocument.Load("Books.xml")
Dim author As XElement = books.Root.<Book>.<Author>.FirstOrDefault()
' LINQ to XML query
Dim att1 As XAttribute = author.Parent.Attribute("id")
' XPath expression
Dim att2 As XAttribute = DirectCast(author.XPathEvaluate("../@id"), _
IEnumerable).Cast(Of XAttribute)().First()
If att1 Is att2 Then
Console.WriteLine("Results are identical")
Else
Console.WriteLine("Results differ")
End If
Console.WriteLine(att1)
This example produces the following output:
Results are identical
id="bk101"
See also
Collaborate with us on GitHub
The source for this content can be found on GitHub, where you can also create and review issues and pull requests. For more information, see our contributor guide.