Cannot parse xml from Yahoo! Fantasy Sports with c#

I did some searching around the web and could not find the cause of my problem so I apologize if that has already been asked in another form I just did not understand.

My problem is that I am trying to parse the XML retrieved from Yahoo! Fantasy Sports but nothing seems to be working.

I have converted the XML I received (using a GET request with my credentials) into a string. Here it is for evaluation.

<?xml version="1.0" encoding="UTF-8" ?> 
- <fantasy_content xml:lang="en-US" yahoo:uri="http://fantasysports.yahooapis.com/fantasy/v2/game/223/players"     xmlns:yahoo="http://www.yahooapis.com/v1/base.rng" time="5489.1560077667ms" copyright="Data provided by Yahoo! and STATS, LLC" refresh_rate="60"     xmlns="http://fantasysports.yahooapis.com/fantasy/v2/base.rng">
- <game>
  <game_key>223</game_key> 
  <game_id>223</game_id> 
  <name>Football PLUS</name> 
  <code>pnfl</code> 
  <type>full</type> 
  <url>http://football.fantasysports.yahoo.com/f2</url> 
  <season>2009</season> 
- <players count="25">
- <player>
  <player_key>223.p.8261</player_key> 
  <player_id>8261</player_id> 
- <name>
  <full>Adrian Peterson</full> 
  <first>Adrian</first> 
  <last>Peterson</last> 
  <ascii_first>Adrian</ascii_first> 
  <ascii_last>Peterson</ascii_last> 
  </name>
  <editorial_player_key>nfl.p.8261</editorial_player_key> 
  <editorial_team_key>nfl.t.16</editorial_team_key> 
  <editorial_team_full_name>Minnesota Vikings</editorial_team_full_name> 
  <editorial_team_abbr>Min</editorial_team_abbr> 
- <bye_weeks>
  <week>9</week> 
  </bye_weeks>
  <uniform_number>28</uniform_number> 
  <display_position>RB</display_position> 
- <headshot>
<url>http://l.yimg.com/iu/api/res/1.2/7gLeB7TR77HalMeJv.iDVA--/YXBwaWQ9eXZpZGVvO2NoPTg2MDtjcj0xO2N3PTY1OTtkeD0xO2R5PTE7Zmk9dWxjcm9wO2g9NjA7cT0xMDA7dz00Ng--/http://l.yimg.com/j/assets/i/us/sp/v/nfl/players_l/20120913/8261.jpg</url> 
  <size>small</size> 
  </headshot>
  <image_url>http://l.yimg.com/iu/api/res/1.2/7gLeB7TR77HalMeJv.iDVA--/YXBwaWQ9eXZpZGVvO2NoPTg2MDtjcj0xO2N3PTY1OTtkeD0xO2R5PTE7Zmk9dWxjcm9wO2g9NjA7cT0xMDA7dz00Ng--/http://l.yimg.com/j/assets/i/us/sp/v/nfl/players_l/20120913/8261.jpg</image_url> 
  <is_undroppable>1</is_undroppable> 
  <position_type>O</position_type> 
- <eligible_positions>
  <position>RB</position> 
  </eligible_positions>
  <has_player_notes>1</has_player_notes> 
  </player>
- <player>
  </players>
  </game>
  </fantasy_content>

The two methods I have tried are these (PLEASE NOTE: "xmlContent" is the string that contains the XML listed above):

1.)
XDocument chicken = XDocument.Parse(xmlContent);
var menus = from menu in chicken.Descendants("name")
select new
{
ID = menu.Element("name").Value,
};

and

2.)
byte[] encodedString = Encoding.UTF8.GetBytes(xmlContent);
MemoryStream ms = new MemoryStream(encodedString);

XmlDocument doc = new XmlDocument();
doc.Load(ms);

foreach (XmlNode row in doc).SelectNodes("//fantasy_content"))
{}

Basically, I get no results enumerated. I have a feeling I am missing some key steps here though. Any help is greatly appreciated. Thank you all.

UPDATE:

As per the awesome suggestions I received, I tried three more things. Since it is not working still, I did not listen very well. :) Actually, that is semi-accurate, please bear with my newbie attempt at working with XML here as I really am thankful for the responses. Here is how I am screwing up the great suggestions, can you offer another tip on what I missed? Thank you all again.

As per Jon Skeet's suggestion (this yields no results for me):

1.) XNamespace ns = "http://fantasysports.yahooapis.com/fantasy/v2/base.rng";
XDocument chicken = XDocument.Parse(xmlContent);
var menus = from menu in chicken.Descendants(ns + "fantasy_content")
select new
{
ID = menu.Element("name").Value,
};

As per the second suggestion (this throws me an error):

2.) var result = XElement.Load(xmlContent).Descendants().Where(x => x.Name.LocalName == "name");

As per the combinations of suggesting I need to identify the namespace and Yahoo! guide at: http://developer.yahoo.com/dotnet/howto-xml_cs.html

3.)     xmlContent = oauth.AcquirePublicData(rtUrl, "GET");

byte[] encodedString = Encoding.UTF8.GetBytes(xmlContent);

MemoryStream ms = new MemoryStream(encodedString);

XmlDocument doc = new XmlDocument();
doc.Load(ms);

XmlNamespaceManager ns = new XmlNamespaceManager(doc.NameTable);
ns.AddNamespace("fantasy_content", "http://fantasysports.yahooapis.com/fantasy/v2/base.rng");
XmlNodeList nodes = doc.SelectNodes("/name", ns);

foreach (XmlNode node in nodes)
{
}
Jon Skeet
people
quotationmark

This is what's tripping you up:

xmlns="http://fantasysports.yahooapis.com/fantasy/v2/base.rng"

You're asking for elements in the unnamed namespace - but the elements default to the namespace shown above.

It's easy to fix that in LINQ to XML (and feasible but less simple in XmlDocument)

XNamespace ns = "http://fantasysports.yahooapis.com/fantasy/v2/base.rng";
var menus = chicken.Descendants(ns + "name")
                   ...

Note that in your original method you're actually looking for name elements within the name elements - that's not going to work, but the namespace part is probably enough to get you going.

EDIT: It's not clear why you're using an anonymous type at all, but if you really want all the name element values from the document as ID properties in anonymous type instances, just use:

XNamespace ns = "http://fantasysports.yahooapis.com/fantasy/v2/base.rng";
var menus = chicken.Descendants(ns + "name")
                   .Select(x => new { ID = x.Value });

Note that there's no need to use Descendants(ns + "fantasy_content") as that's just selecting the root element.

people

See more on this question at Stackoverflow