XDocument.Load()错误

我有一些代码:

WebRequest request = HttpWebRequest.Create(url); WebResponse response = request.GetResponse(); using (System.IO.StreamReader sr = new System.IO.StreamReader(response.GetResponseStream())) { System.Xml.Linq.XDocument doc = new System.Xml.Linq.XDocument(); doc.Load(new System.IO.StringReader(sr.ReadToEnd())); } 

我无法在XML文档中加载我的响应。 我收到以下错误:

 Member 'System.XMl.Linq.XDocument.Load(System.IO.TextReader' cannot be accessed with an instance reference; qualify it with a type name instead. 

这变得非常令人沮丧。 我究竟做错了什么?

XmlDocument.Load不同, XDocument.Load是一个返回XDocument的静态方法:

 XDocument doc = XDocument.Load(new StringReader(sr.ReadToEnd())); 

将流读到最后然后创建一个StringReader似乎毫无意义。 首先创建StreamReader也毫无意义 – 如果XML文档不是 UTF-8,它可能会导致问题。 更好:

对于.NET 4,其中存在XDocument.Load(Stream)重载:

 using (var response = request.GetResponse()) { using (var stream = response.GetResponseStream()) { var doc = XDocument.Load(stream); } } 

对于.NET 3.5,没有:

 using (var response = request.GetResponse()) { using (var stream = response.GetResponseStream()) { var doc = XDocument.Load(XmlReader.Create(stream)); } } 

或者,只需让LINQ to XML完成所有工作:

 XDocument doc = XDocument.Load(url); 

编辑:请注意,编译器错误确实为您提供了足够的信息:它告诉您不能将XDocument.Load称为doc.Load ,而是提供类型名称。 您的下一步应该是查阅文档,当然这也是示例。