2010-11-08 31 views
2

我试图从this site中获取所有<entry>标签。它会很好地加载到XDocument中,但我似乎无法获取任何<entry>元素。下面是我的代码有:从XDocument获取后代

XDocument netflixPage = new XDocument(); 
netflixPage = XDocument.Load("http://odata.netflix.com/Catalog/Titles"); 

foreach (XElement xe in netflixPage.Descendants("entry").ToList()) 
{ 
    string movieInfo = xe.Value; 
} 

回答

5

你的代码试图以检索 命名空间entry元素,但文档包含http://www.w3.org/2005/Atom命名空间entry元素:

XNamespace atom = "http://www.w3.org/2005/Atom"; 

XDocument doc = XDocument.Load("http://odata.netflix.com/Catalog/Titles"); 

foreach (XElement xe in doc.Descendants(atom + "entry")) 
{ 
    string movieInfo = (string)xe; 
} 
+0

谢谢您的回复,那非常棒!现在,我试图抓住一些更多的信息,如。我试过这个代码: XNamespace msft =“http://schemas.microsoft.com/ado/2007/08/dataservices”; XDocument netflixPage = new XDocument(); netflixPage = XDocument.Load(“http://odata.netflix.com/Catalog/Titles”); foreach(netflixPage.Descendants(msft +“d”)中的XElement xe) { string stuff = xe.Value; } 但它不会加载。你知道如何抓住元素吗? – 2010-11-08 18:51:51

+0

@ user500975:'d'是元素的前缀,而不是名称。你可以忽略它。元素的名称是'http:// schemas.microsoft.com/ado/2007/08/dataservices'命名空间中的'ReleaseYear'。你可以使用'msft +“ReleaseYear”'来访问它,其中'XNamespace msft =“http://schemas.microsoft.com/ado/2007/08/dataservices”;' – dtb 2010-11-08 19:27:22