我有一些代码:
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()));
}
Run Code Online (Sandbox Code Playgroud)
我无法在XML文档中加载我的响应.我收到以下错误:
Member 'System.XMl.Linq.XDocument.Load(System.IO.TextReader' cannot be accessed
with an instance reference; qualify it with a type name instead.
Run Code Online (Sandbox Code Playgroud)
这变得非常令人沮丧.我究竟做错了什么?
Jon*_*eet 13
不像XmlDocument.Load
,XDocument.Load
是一个返回 new 的静态方法XDocument
:
XDocument doc = XDocument.Load(new StringReader(sr.ReadToEnd()));
Run Code Online (Sandbox Code Playgroud)
将流读到最后然后创建一个似乎毫无意义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);
}
}
Run Code Online (Sandbox Code Playgroud)
对于.NET 3.5,没有:
using (var response = request.GetResponse())
{
using (var stream = response.GetResponseStream())
{
var doc = XDocument.Load(XmlReader.Create(stream));
}
}
Run Code Online (Sandbox Code Playgroud)
或者,只需让LINQ to XML完成所有工作:
XDocument doc = XDocument.Load(url);
Run Code Online (Sandbox Code Playgroud)
编辑:请注意,编译器错误确实为您提供了足够的信息:它告诉您不能调用XDocument.Load
as doc.Load
,而是给出类型名称.您的下一步应该是查阅文档,当然这也是示例.
归档时间: |
|
查看次数: |
12467 次 |
最近记录: |