Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Select XElement where child element has a value

Given the following XML:

<platforms>
  <platform>
    <id>1</id>
    <price>2.99</price>
  </platform>
</platforms>

How can I select the "platform" element as an XElement object based on the child element "id" having a value of "1"?

I have got this far:

XDocument xPlatformXml = new XDocument();
XElement xel = xPlatformXml.Element("platforms").Elements("platform").Where(x => x.Value == "1").SingleOrDefault();

But this is looking for the value to be in "platform" element rather than "id".

like image 805
rf_wilson Avatar asked Mar 04 '13 10:03

rf_wilson


1 Answers

XDocument xPlatformXml = new XDocument();
XElement xel = xPlatformXml.Element("platforms")
                           .Elements("platform")
                           .Where(x => x.Element("id").Value == "1")
                           .SingleOrDefault();

Or using XElement to int conversion:

XDocument xPlatformXml = new XDocument();
XElement xel = xPlatformXml.Element("platforms")
                           .Elements("platform")
                           .Where(x => (int)x.Element("id") == 1)
                           .SingleOrDefault();
like image 63
MarcinJuraszek Avatar answered Sep 29 '22 11:09

MarcinJuraszek